r - 迭代数据表中的相同行
问题描述
我有一个包含 3 列的数据表,如下所示:
dt <- data.table(
col1 = c("id1","id1","id1","id6","id3","id3"),
col2 = c("A", "B", "C", "D", "E", "F"),
col3 = c("AA", "BB", "CC", "DD", "EE", "FF"))
col 1 中的值也是字符,我需要遍历此列中的每一行。如果它们相同,则保留最后一个,并从最后两列中检索该位置的相应值。例如,因为id1
我将只保留第三个值并C
从. 如果有唯一的行,只需按原样检索and 。col2
CC
col3
col2
col3
我需要的输出应该是:
col1 col2 col3
id1 C CC
id6 D DD
id3 F FF
我尝试了类似下面的方法并得到“如果需要 TRUE/FALSE 的 if ,,, 缺失值出错。
for (i in nrow(dt)) {
if (dt[i,1]!=dt[i+1,1]){
dt[i, 2] = dt[i,2]
}
else {
dt[i,2] <- dt$QUESTION
}
}
关于如何解决这个问题的任何想法?我不必坚持使用数据表
谢谢
解决方案
有很多方法可以解决这个问题,但一种简单的方法是使用检查重复项duplicated
并保留从末尾开始的第一个值:
dt[!duplicated(dt$col1, fromLast = T),]
推荐阅读
- r - 如何将一个数据集映射到同一个图的左下 xy 轴,另一个映射到右上 xy 轴?
- c# - WPF在TextBlock中显示马拉雅拉姆语
- r - R:从自举结果的向量计算 BCa
- android - 将 React-Native 更新到 0.59.2 后,它无法运行
- java - 重复正则表达式
- azure-analysis-services - Azure 分析服务 Rest API 同步参数
- javascript - 在 iOS 上,React 文本/数字输入卡住,迫使用户输入电话号码
- azure - Azure 自定义策略 B2C - 编排步骤
- java - 以 getter 作为参数调用函数不保留引用?
- string - 根据 sas 中另一个字符变量的值重新编码字符变量中的值