提问人:KArrow'sBest 提问时间:3/26/2022 更新时间:3/26/2022 访问量:496
删除重复项并保留在 r data.table 中
Drop duplicates and keep first in r data.table
问:
不熟悉 R 对不起,我还找不到这个问题。
假设我有一个此类数据的 IP 网络:
toy_data = data.table(from=c("A","B","A","C","D","C"), to=c("B","A","C","B","A","A"))
从 | 自 |
---|---|
一个 | B |
B | 一个 |
一个 | C |
C | B |
D | 一个 |
C | 一个 |
我无法在 igraph 中加载整个网络并尝试根据块计算统计数据。因此,鉴于网络是无向的,我想删除所有具有相反 from-to 模式的行(第 2 行、第 6 行)。
我原本以为这样的事情会奏效:不幸的是unique(toy_data[,.(c(from,to)|c(to,from))])
我想使用两个辅助列:
toy_data[,orig:=paste(from,to,sep="")]
toy_data[,reverse:=paste(to,from,sep="")]
然后使用类似的东西:unique(df[,.(?)])
但我的猜测是,这比我正在做的事情要容易得多。
答:
2赞
akrun
3/26/2022
#1
与其创建临时列,不如将最小值乘以 () 与行 () 并删除重复项,并否定 (paste
pmin
max
pmax
duplicated
!
)
toy_data[!duplicated(paste(pmin(from, to), pmax(from, to)))]
-输出
from to
<char> <char>
1: A B
2: A C
3: C B
4: D A
上一个:计算重复的多列中值的出现次数
评论