仅平均重复的行并替换定义列中的值
Average only duplicated rows and replacing value in a defined column
我有一个数据框D
:
surname name salary
Red A 1000
Green B 900
Green A 1100
Blue C 1000
Blue B 1000
Blue F 800
Violet F 1200
某些行在 surname
中没有重复,其他一些是。
我只需要聚合姓氏重复的行,计算工资的平均值并将名称更改为 "X"。
我尝试了一些使用 duplicated()
的东西,但它保留了一个副本作为原始副本并更改了其他副本。
D$name<-replace(D$name,duplicated(D$surname),"X")
而且我无法对 salary
的值进行平均。
谢谢!
我们可以使用
D$name <- replace(D$name,duplicated(D$surname)|duplicated(D$surname,
fromLast = TRUE),"X")
如果我们需要创建一个平均列
library(dplyr)
D %>%
group_by(surname) %>%
mutate(average = mean(salary))
数据
D <- structure(list(surname = c("Red", "Green", "Green", "Blue", "Blue",
"Blue", "Violet"), name = c("A", "B", "A", "C", "B", "F", "F"
), salary = c(1000L, 900L, 1100L, 1000L, 1000L, 800L, 1200L)), class = "data.frame", row.names = c(NA,
-7L))
我有一个数据框D
:
surname name salary
Red A 1000
Green B 900
Green A 1100
Blue C 1000
Blue B 1000
Blue F 800
Violet F 1200
某些行在 surname
中没有重复,其他一些是。
我只需要聚合姓氏重复的行,计算工资的平均值并将名称更改为 "X"。
我尝试了一些使用 duplicated()
的东西,但它保留了一个副本作为原始副本并更改了其他副本。
D$name<-replace(D$name,duplicated(D$surname),"X")
而且我无法对 salary
的值进行平均。
谢谢!
我们可以使用
D$name <- replace(D$name,duplicated(D$surname)|duplicated(D$surname,
fromLast = TRUE),"X")
如果我们需要创建一个平均列
library(dplyr)
D %>%
group_by(surname) %>%
mutate(average = mean(salary))
数据
D <- structure(list(surname = c("Red", "Green", "Green", "Blue", "Blue",
"Blue", "Violet"), name = c("A", "B", "A", "C", "B", "F", "F"
), salary = c(1000L, 900L, 1100L, 1000L, 1000L, 800L, 1200L)), class = "data.frame", row.names = c(NA,
-7L))