gpt4 book ai didi

从 data.table 中删除重复出现的数据

转载 作者:行者123 更新时间:2023-12-03 08:33:02 25 4
gpt4 key购买 nike

我有一个这样的 data.table:

data.table(a=rep(c("xx", "yy"), each=4), b=rep(c("zz", "nn"), each=2), vals=10:17)

a b vals
1: xx zz 10
2: xx zz 11
3: xx nn 12
4: xx nn 13
5: yy zz 14
6: yy zz 15
7: yy nn 16
8: yy nn 17

我想要的是这个,因为它在导出到 excel 然后导出到单词时在表格中看起来更好(我知道,从不使用 excel...):

    a  b vals
1: xx zz 10
2: NA NA 11
3: NA nn 12
4: NA NA 13
5: yy zz 14
6: NA NA 15
7: NA nn 16
8: NA NA 17

编辑:忘了说如果一个数值是重复出现的,它不应该被改为 NA,只有字符列。

最佳答案

使用 data.table 中的 rleid 我们可以创建一个函数

library(data.table)

replace_duplicated <- function(x) {
replace(x, duplicated(rleid(x)), NA)
}

现在将其应用于选定的列(感谢@markus)

cols = names(df)[sapply(df, is.character)]
df[,(cols) := lapply(.SD, replace_duplicated ), .SDcols = cols]
df

# a b vals
#1: xx zz 10
#2: <NA> <NA> 11
#3: <NA> nn 12
#4: <NA> <NA> 13
#5: yy zz 14
#6: <NA> <NA> 15
#7: <NA> nn 16
#8: <NA> <NA> 17

dplyr 我们可以使用 mutate_if

library(dplyr)
df %>% mutate_if(is.character, replace_duplicated)

mutate_at

df %>% mutate_at(cols, replace_duplicated)

关于从 data.table 中删除重复出现的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54458326/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com