【发布时间】:2015-09-17 17:13:24
【问题描述】:
我正在用 R 中的 if 函数编写一个循环。表格如下:
ID category
1 a
1 b
1 c
2 a
2 b
3 a
3 b
4 a
5 a
我想使用带有 if 函数的 for 循环来添加另一列来计算每个分组 ID,如下面的 count 列: ID类别计数
1 a 1
1 b 2
1 c 3
2 a 1
2 b 2
3 a 1
3 b 2
4 a 1
5 a 1
我的代码是(输出是表名):
for (i in 2:nrow(output1)){
if(output1[i,1] == output[i-1,1]){
output1[i,"rn"]<- output1[i-1,"rn"]+1
}
else{
output1[i,"rn"]<-1
}
}
但是返回的结果是所有计数列的值都是“1”。
ID category Count
1 a 1
1 b 1
1 c 1
2 a 1
2 b 1
3 a 1
3 b 1
4 a 1
5 a 1
请帮帮我...谢谢
【问题讨论】:
-
有些函数可以快速完成这个操作,但是用循环练习逻辑控制流总是好的。尝试在循环前添加
output1$rn <- 1 -
尝试按 id 分组并计算行数,
library(dplyr); dat %>% group_by(ID) %>% mutate(Count = 1:n()) -
你只需要基本 R 来执行此操作,请参阅我的答案。
标签: r if-statement for-loop