【发布时间】:2021-01-31 06:49:31
【问题描述】:
我有一个带有字符列的数据框 (df)。每个索引由一串数字组成,以逗号分隔。请参阅可重现的示例:
a<-c("1,2", "6,8", "6,9")
b<-c("4,7","9,3","5,5")
c<-c("2,1","5,4","8,9")
df <- as.data.frame(cbind(a,b,c))
我想分别计算逗号之前的数字和逗号之后的数字的行均值。最好使用 tidyverse/dplyr。输出如下所示:
a b c mean1 mean2
1,2 4,7 2,1 2.33 3.33
6,8 9,3 5,4 6.67 5.00
6,9 5,5 8,9 6.00 7.67
所以 mean1 中的第一个索引是第一行逗号前数字的平均值 ((1+4+2)/3)。而mean2中的第一个索引是第一行逗号后数字的平均值((2+7+1)/3)。
我看过另一篇建议使用 library(splitstackshape) 和 cSplit 命令的帖子,但我无法让它工作。
df <- df %>% cSplit(c("a","b","c"), direction = "wide") %>%
summarise(mean = rowMeans(c("a","b","c")))
我还尝试过用逗号分隔列并将它们转换为宽和其他各种东西。如果可以这样解决,那肯定是最简单的方法了。如果你能想出一个不涉及列名的解决方案,那就太棒了!
【问题讨论】:
标签: r dplyr tidyverse average mean