【发布时间】:2017-10-23 17:47:31
【问题描述】:
我目前正在研究一个大型数据集,研究重复的水权。每个权利持有人都被分配了一个 RightID,但有些权利被记录了两次以用于文书目的。但是,一些 rightID 不止一次列出,并且确实与我的最终目标相关。一个例子:当金属标签号码被分配给特定的水权时,会出现重复条目。为避免重复计算关键信息,我需要删除一个观察结果。
我现在已经写好了,
#Updated Metal Tag Number
for(i in 1:nrow(duplicate.rights)) {
if( [i, "RightID"]==[i-1, "RightID"] & [i,"MetalTagNu"]=![i-1, "MetalTagNu"] ){
remove(i)
}
print[i]
}
原来的数据框也是这样设置的:
RightID Source Use MetalTagNu
1-0000 Wolf Creek Irrigation N/A
1-0000 Wolf Creek Irrigation 12345
1-0001 Bear River Domestic N/A
1-0002 Beaver Stream Domestic 00001
1-0002 Beaver Stream Irrigation 00001
例如权利人 1-0002 必须保留,因为他将其水权用于两个不同的目的。但是,权利人1-0000 是不需要重复的。
权利持有人 1-0000 我需要消除,但权利持有人 1-0002 对我的最终目标很有价值。我还应该注意,单个 rightID 最多可以有 10 个条目,但在这 10 个条目中,只有 1 个是不必要的重复项。此外,数据集中的重复条目和原始条目不会彼此相邻。
我是新手,所以请原谅我之前糟糕的尝试。我知道我可以使用 lapply 函数来让它更快更高效。任何指导将不胜感激。
【问题讨论】:
-
请提供一个显示数据框的最小工作示例
标签: r for-loop if-statement duplicates lapply