在给定条件的情况下计算数据帧中列的子集的平均值/中值时遇到了一个有趣的问题。
此时,我不需要建议,但认为分享这个问题很有意思:
testFile <- data.frame(
ID = 1:10, Value = rnorm(10),
Condition = sample(c("Yes", "No"), 10, replace = T)
)
median1 <- median(testFile[testFile$Condition == "Yes", ]$Value)
median2 <- testFile %>%
filter(Condition == "Yes") %>%
select(Value) %>%
median
median.default(。)出错:需要数字数据
但是,以下代码正在运行:
max2 <- testFile %>%
filter(Condition == "Yes") %>%
select(Value) %>%
max
values <- testFile %>%
filter(Condition == "Yes") %>%
select(Value)
class(values[2,1])
[1]“数字”
答案 0 :(得分:1)
使用unlist的dplyr结果解决方案:
median3 <- testFile %>% filter(Condition == "Yes") %>% select(Value) %>% unlist %>% median
非dplyr解决方案,正如OP中已经开始的那样:
> median1 <- median(testFile[testFile$Condition == "Yes", ]$Value) # Working