R 替换data.table中的重复行
我试图替换data.table中重复行的值。假设你有R 替换data.table中的重复行,r,data.table,R,Data.table,我试图替换data.table中重复行的值。假设你有 A <- c(1,2,3,4,4,6,4) B <- c("a","b","c","d","e","f","g") C <- c(10,11,23,8,8,1,3) dt <- data.table(A,B,C) 你可以 > A <- c(1,2,3,4,4,6,4) > B <- c("a","b","c","d","e","f","g") > dt <- data.table(
A <- c(1,2,3,4,4,6,4)
B <- c("a","b","c","d","e","f","g")
C <- c(10,11,23,8,8,1,3)
dt <- data.table(A,B,C)
你可以
> A <- c(1,2,3,4,4,6,4)
> B <- c("a","b","c","d","e","f","g")
> dt <- data.table(A,B,C, stringsAsFactors = FALSE)
> C <- c(10,11,23,8,8,1,3)
> dt[dt[, j = duplicated(.SD), .SDcols = c("A", "C")], B := "0"]
> dt
A B C
1: 1 a 10
2: 2 b 11
3: 3 c 23
4: 4 d 8
5: 4 0 8
6: 6 f 1
7: 4 g 3
>A B dt C dt[dt[,j=重复(.SD),.SDcols=C(“A”,“C”)],B:=“0”]
>dt
A、B、C
1:1A10
2:2b11
3:3C23
4:4d8
5: 4 0 8
6:6f1
7:4 g 3
。。。但是现在看到David的解决方案更简洁了…
dt[duplicated(dt,by=c(“A”,“c”)),B:=“0”]
?另外,请注意,B
是一个字符列,因此将0指定给它没有多大意义。这只是为了给出一个可复制的示例,我正在处理真实和机密数据;)。谢谢you@DavidA我认为这应该是一个答案(要么是新的答案,要么是罗曼的答案),但这将留给你。
> A <- c(1,2,3,4,4,6,4)
> B <- c("a","b","c","d","e","f","g")
> dt <- data.table(A,B,C, stringsAsFactors = FALSE)
> C <- c(10,11,23,8,8,1,3)
> dt[dt[, j = duplicated(.SD), .SDcols = c("A", "C")], B := "0"]
> dt
A B C
1: 1 a 10
2: 2 b 11
3: 3 c 23
4: 4 d 8
5: 4 0 8
6: 6 f 1
7: 4 g 3