我正在尝试获取特定列的行数。我有三列,分别是名称,年龄和专业。我如何才能从此列表中找出例如多少个BIO专业。
我有DF <-(姓名,年份,专业,GPA)
我想要一个功能,这样我就可以消除少于20人的任何专业。
所以我想要这样的东西,但是在实际的r代码中。
DF <- function(x){
## Y <- get number of people for each major
## GPA [DF$Y < 20] <- NA
任何帮助,将不胜感激
最佳答案
我认为到目前为止提供的两种方法过于复杂。尝试其中任何一种,第二种显然是“正确的方法”。 :-)(借用@gung的示例。)
# 1
> tapply( DF$MAJOR, DF$MAJOR, length)
BIO ECON HIST LIT MATH
181 155 297 303 64
# 2
> table(DF$MAJOR)
BIO ECON HIST LIT
MATH
181 155 297 303 64
And as far as efficiency?
> system.time( {dt = data.table(DF)
+ foo <- dt[,.N,by=MAJOR] })
user system elapsed
1.384 0.027 1.417
> system.time(foo<- table(DF$MAJOR) )
user system elapsed
0.110 0.025 0.134
#edit:
> system.time( {dt = as.data.table(DF)
+ foo <- dt[,.N,by=MAJOR] })
user system elapsed
0.064 0.022 0.086
回答注释中的附加问题:如何将表格结果与每条学生记录相关联,查看
ave
函数,并使用第一种方法与“[” -extraction或subset
结合使用: DF$group.size <- ave(DF$MAJOR, DF$MAJOR, length)
newDF <- DF[ DF$group.size >=20000 , ]
关于r - 如何获取列中特定值的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17177253/