我有一个数据框架,其中一个列代表年龄。如下表所示,年龄值作为间隔计算:
head(ddd)
country.of.birth age sex X2000 X2001 X2002 X2003 X2004 X2005 X2006 X2007
Afghanistan 0-4 men 0 0 1 2 2 0 1 1
Afghanistan 5-9 women 1 1 0 0 1 0 0 0
Afghanistan 10-14 men 0 2 5 2 3 4 1 1
Afghanistan 15-19 women 4 1 4 2 3 2 3 2
Afghanistan 20-24 men 5 0 8 7 7 3 5 3
Afghanistan 25-29 women 4 8 3 9 4 4 4 3我应该使用什么命令来选择一个特定的年龄范围?我试过:
sum(ddd[ddd$age == "20-24", 4:11])为了得到年龄在20-24岁之间的所有列的总和(应该给出38),我得到了以下错误:
Error in FUN(X[[i]], ...) :
only defined on a data frame with all numeric variables发布于 2015-07-07 12:17:33
我认为这是一个尾随/前导空间的情况。我们可以从“str_trim”中移除尾部/前导空格(使用)
ddd$age[5] <- '20-29 '
sum(ddd[ddd$age == "20-29", 4:11])
#Error in FUN(X[[i]], ...) :
# only defined on a data frame with all numeric variables
library(stringr)
sum(ddd[str_trim(ddd$age)=='20-29', 4:11])
#[1] 38或者使用sub
ddd$age <- sub('^\\s*|\\s*$', '', ddd$age)
sum(ddd[str_trim(ddd$age)=='20-29', 4:11])
#[1] 38如果使用grep,则可以避免此问题。
sum(ddd[grep('20-29', ddd$age),4:11])
#[1] 38发布于 2015-07-07 12:26:22
原因可能是某些列是
临时$X 2000 <- as.factor(临时$X 2000)
(temptemp$age==“20-24”,4:11)
乐趣中的错误(X[i],.)
临时$X 2000 <- as.numeric(临时$X 2000)
(temptemp$age==“20-24”,4:11)
37
https://stackoverflow.com/questions/31268120
复制相似问题