Dplyr select() - 需要数字数据问题

时间:2017-02-06 22:41:14

标签: r select dplyr numeric

在给定条件的情况下计算数据帧中列的子集的平均值/中值时遇到了一个有趣的问题。

此时,我不需要建议,但认为分享这个问题很有意思:

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]“数字”

1 个答案:

答案 0 :(得分:1)

使用unlist的dplyr结果解决方案:

median3 <- testFile %>% filter(Condition == "Yes") %>% select(Value) %>% unlist %>% median

非dplyr解决方案,正如OP中已经开始的那样:

> median1 <- median(testFile[testFile$Condition == "Yes", ]$Value) # Working