我有一个数据框,所以当我尝试计算A列的平均值时,我只写了
mean(df$A)
它工作正常。
但是当我尝试仅计算部分数据帧的均值时,会收到错误消息,指出它不是数字或逻辑值
df$A %>% filter(A=="some value") %>% mean(df$A)
A的类型为double。我也尝试使用
将其转换为数字df$A <- as.numeric(as.character(df$A))
但是没有用。
答案 0 :(得分:2)
最好是提供A列的示例。
但是,仅通过查看您的问题,问题就出在magrittr-dplyr语法中。
基本语法:
year sh1 sh2 sh3 sh4 sh5 newVariable
2011 0 1 1 0 0 1
2012 1 1 0 1 1 2
2013 0 0 0 0 0 0
2014 1 1 0 0 0 1
2015 1 1 1 1 1 1
dplyr 与管道:
mean(df$A[df$A == 'some value'])
请注意语法和管道,更多信息here。
答案 1 :(得分:1)
尝试df %>% filter(A==some value) %>% summarise(mean(A))
。
请注意,由于
some value
,均值将为filter
。 另外,mean()
对于类double
的对象也很好用