【问题标题】:Replace strings of numbers separated by commas with the median in R [duplicate]用R中的中位数替换用逗号分隔的数字字符串[重复]
【发布时间】:2020-07-01 21:22:51
【问题描述】:

我需要帮助替换或提取数字字符串,在我的 df 的每个元素中用逗号分隔,并将其替换为中位数。例如,

a <- c("3, 3, 5, 5", "7, 7, 5, 5", "3, 4, 4, 5", "5, 7")
b <- c("Karina", "Eva", "Jake", "Ana")
df <- data.frame(b,a)

现在我需要将变量 a 替换为每个元素中包含的这些数字的中位数,如下所示:

        b    a
1 Karina     4
2 Eva        6
3 Jake       4
4 Ana        6

一点点背景。每个数字实际上是属于相应名称的单词的长度。我需要找到每个名称的中值长度,并确定以元音开头的名称是否具有更长的中值长度。因此,例如,从上面我将得出结论,以元音开头的名称长度较短。并使用测试来证明它在统计上是显着的。如果有人能以任何方式指导我,我真的很感激!

【问题讨论】:

    标签: r string median statistical-test


    【解决方案1】:

    我们可以在, 上用strsplit 后跟零个或多个空格(\\s*) 拆分'a' 列,遍历list,转换为numeric 并得到median,将其分配给同一列

    df$a <- sapply(strsplit(df$a, ",\\s*"), function(x) median(as.numeric(x)))
    df$a
    #[1] 4 6 4 6
    

    或者使用tidyverse,我们可以使用separate_rows拆分'a'列并在转换类型'的同时扩展行,然后通过median进行分组

    library(dplyr)
    library(tidyr)
    df %>% 
         separate_rows(a, convert = TRUE) %>%
         group_by(b) %>% 
         summarise(a = median(a))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-10
      • 2018-12-08
      • 1970-01-01
      • 2013-06-24
      • 2011-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多