【发布时间】:2014-08-14 19:43:06
【问题描述】:
这是我的示例数据集
> a
V1 V2
1 A1 5437
2 A1 5437
3 A1 5437
4 A2 1819
5 A2 1758
6 A2 1212
7 A2 1212
8 A3 1456
我想计算 V2 列的唯一值,因此结果将是:
A1 1
A2 3
A3 1
我已经开始编写我的代码,但我不知道 - 这应该是什么样子:
old_id <- a[1,2]
old_art <- a[2,1]
for (i in nrow(a)){
if (old_id == a[1,i+2] && old_art == a[i+2,1]){
new_id[i] <- old_id[1,i+2]
new_art[i] <- i
}
i <- i+1
}
我知道非常简单的解决方案,例如:
tapply(a[,2], a[,1], function(t) length(unique(t)))
但我的任务是使用循环函数 - 可能是 for 和 if
【问题讨论】:
-
Barranka 你必须相信我这不是家庭作业。你能帮我在循环中改变功能吗?
-
我曾尝试使用 mapreduce(我写了其他关于此的问题,但人们不明白我的意图)。更何况我不能在mapreduce函数tapply中使用,我必须使用循环。
标签: r loops if-statement for-loop tapply