将逗号分隔的数字字符串替换为 R 中的中位数
Replace strings of numbers separated by commas with the median in R
我需要帮助替换或提取数字字符串,在我的 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
一点点背景。每个数字实际上是属于相应名称的单词的长度。我需要找到每个名字的中值长度,并弄清楚以元音开头的名字是否具有更长的中值长度。因此,例如,从上面我将得出结论,以元音开头的名称长度较短。并使用测试来表明它具有统计显着性。如果有人能以任何方式指导我,我真的很感激!
我们可以在 ,
上用 strsplit
拆分 'a' 列,后跟零个或多个空格 (\s*
),在 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))
我需要帮助替换或提取数字字符串,在我的 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
一点点背景。每个数字实际上是属于相应名称的单词的长度。我需要找到每个名字的中值长度,并弄清楚以元音开头的名字是否具有更长的中值长度。因此,例如,从上面我将得出结论,以元音开头的名称长度较短。并使用测试来表明它具有统计显着性。如果有人能以任何方式指导我,我真的很感激!
我们可以在 ,
上用 strsplit
拆分 'a' 列,后跟零个或多个空格 (\s*
),在 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))