Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 删除行中的重复项,插入NAs_R_Dataframe - Fatal编程技术网

R 删除行中的重复项,插入NAs

R 删除行中的重复项,插入NAs,r,dataframe,R,Dataframe,我没有看到任何类似的问题,这可能对其他人有用。 我想删除行中的重复项,然后插入NAs。 好的,快速示例,让我们创建一个df: v1 <- c('A','D','F') v2 <- c('A','D','G') v3 <- c('B','E','F') v4 <- c('C', NA, NA) df <- data.frame(v1,v2,v3,v4) > df v1 v2 v3 v4 1 A A B C 2 D D E <NA

我没有看到任何类似的问题,这可能对其他人有用。 我想删除行中的重复项,然后插入NAs。 好的,快速示例,让我们创建一个df:

v1 <- c('A','D','F')
v2 <- c('A','D','G')
v3 <- c('B','E','F')
v4 <- c('C', NA, NA)
df <- data.frame(v1,v2,v3,v4)

> df
  v1 v2 v3   v4
1  A  A  B    C
2  D  D  E <NA>
3  F  G  F <NA>

我们可以使用
apply
MARGIN=1
来循环行,
NA
替换
重复的
元素,将(
c
)非NA元素与“NA”元素连接,转置(
t
)数据集并转换为
data.frame

as.data.frame(t(apply(df, 1, function(x) {
        x1 <- replace(x, duplicated(x), NA)
        c(x1[!is.na(x1)], x1[is.na(x1)])})))
#  V1 V2   V3   V4
#1  A  B    C <NA>
#2  D  E <NA> <NA>
#3  F  G <NA> <NA>
as.data.frame(t)应用(df,1,函数(x){

x1是的,的确,它工作得很好,谢谢你的解释
df[1,] <- unique(as.character(unlist(df[1,])))
as.data.frame(t(apply(df, 1, function(x) {
        x1 <- replace(x, duplicated(x), NA)
        c(x1[!is.na(x1)], x1[is.na(x1)])})))
#  V1 V2   V3   V4
#1  A  B    C <NA>
#2  D  E <NA> <NA>
#3  F  G <NA> <NA>