在数据组内的 r 中不同

Distinct in r within groups of data

如何将数据框(左侧)转换为数据框(右侧)?

我正在尝试通过 dplyr 进行此操作,方法是将名称和不同分组分组,但它只给出了 3 行

df %>%
group_by(name) %>%
distinct(.,keep.all = T) %>%
View()

有一种简单的方法可以访问您要更改的所有单元格:

data <- data.frame(name = c(rep("A", 5), rep("B", 5), rep("C", 5)), subject = c(rep(1:5, 3)), marks = sample(1:100, 15))

> data
   name subject marks
1     A       1    31
2     A       2    12
3     A       3    29
4     A       4    67
5     A       5    99
6     B       1    77
7     B       2     3
8     B       3    92
9     B       4    69
10    B       5    42
11    C       1    52
12    C       2    66
13    C       3    98
14    C       4    23
15    C       5    72

duplicated(data$name) 访问相关单元格。但是 R 没有办法离开单元格 "blank",可以这么说。

您可以设置它们 NA,或用空 character:

填充
data$name[duplicated(data$name)] <- NA

> data
   name subject marks
1     A       1    31
2  <NA>       2    12
3  <NA>       3    29
4  <NA>       4    67
5  <NA>       5    99
6     B       1    77
7  <NA>       2     3
8  <NA>       3    92
9  <NA>       4    69
10 <NA>       5    42
11    C       1    52
12 <NA>       2    66
13 <NA>       3    98
14 <NA>       4    23
15 <NA>       5    72

data$name <- as.character(data$name)
data$name[duplicated(data$name)] <- ""

> data
   name subject marks
1     A       1    30
2             2    52
3             3     5
4             4    48
5             5    99
6     B       1    14
7             2    20
8             3    34
9             4    55
10            5    53
11    C       1    38
12            2    27
13            3    67
14            4    12
15            5    77

要将后一种解决方案与 factor 变量一起使用,您需要添加 "" 作为因子标签:

data$name <- factor(as.numeric(data$name), 1:4, c(levels(data$name), ""))
data$name[duplicated(data$name)] <- ""