【发布时间】:2019-12-03 15:54:31
【问题描述】:
计算一行等于一个值的次数
- 我这里有一个 df:
df <- data.frame('v1'=c(1,2,3,4,5),
'v2'=c(1,2,1,1,2),
'v3'=c(NA,2,1,4,'1'),
'v4'=c(1,2,3,NaN,5),
'logical'=c(1,2,3,4,5))
- 我想知道有多少次一行等于带有新变量“count”的变量“logical”的值 我写了一个这样的 for 循环:
attach(df)
df$count <- 0
for(i in colnames(v1:v4)){
if(df$logical == i){
df$count <- df$count+1}
}
但它不起作用。新变量“count”中仍然全为 0。 请帮忙解决。
完美的结果应该是这样的:
df <- data.frame('v1'=c(1,2,3,4,5),
'v2'=c(1,2,1,1,2),
'v3'=c(NA,2,1,4,'1'),
'v4'=c(1,2,3,NaN,5),
'logical'=c(1,2,3,4,5),
'count'=c(3,4,2,2,2))
非常感谢初学者。
【问题讨论】:
-
与问题没有直接关系,但我强烈建议您避免使用
attach()函数。如果您每次都使用df$,则在这种情况下根本不需要它。 -
我猜
if部分在for循环中不正确。可以是ifelseifelse(df$logical == df[[i]], ..