从R

时间:2018-07-26 21:59:15

标签: r dataframe duplicates

我有一个数据帧,该数据帧由一列中的许多ID号和另一列中的虚拟变量组成。数据帧具有相同ID的多次迭代,但是伪值不一致。例如:

   ID dummy
1  1111     1
2  1111     1
3  1111     0
4  1112     0
5  1112     0
6  1112     0
7  1112     0
8  1113     1
9  1113     0
10 1113     1

我想要的是获取所有这些单独的ID编号以及虚拟值1(如果它的单个实例为1,否则为0)的我自己的数据帧。一直发生的是,当我尝试分离重复项时,有时留下的虚拟值为0而不是1。这是我尝试获取的示例:

   ID dummy
1  1111     1
2  1112     0
3  1113     1

请帮助。

2 个答案:

答案 0 :(得分:1)

library(dplyr)
df %>% group_by(ID) %>% 
       mutate(dummy1=max(dummy)) %>% filter(row_number()==1) %>%
       #dplyr::distinct(ID, .keep_all=T) %>%  #Another option
       select(-dummy1)


    # A tibble: 3 x 2
    # Groups:   ID [3]
      ID dummy
      <int> <int>
1  1111     1
2  1112     0
3  1113     1

数据

df <- read.table(text="
               ID dummy
    1  1111     1
    2  1111     1
    3  1111     0
    4  1112     0
    5  1112     0
    6  1112     0
    7  1112     0
    8  1113     1
    9  1113     0
    10 1113     1
                                     ",header=T, stringsAsFactors = F)

答案 1 :(得分:1)

这不只是

df[!duplicated(df$ID), ]
#    ID dummy
#1 1111     1
#4 1112     0
#8 1113     1

这将以自上而下的方式删除所有重复的ID