【发布时间】:2015-09-11 14:26:37
【问题描述】:
在此示例中,我需要检查第一列 - 名称中是否有任何重复项。有 - 前 3 行。现在我知道了 - 我需要检查“etc2”列在前 3 行中是否也有重复项。在这种情况下,只有前 2 行是重复的。然后我需要取这 2 行中所有列的平均值。在此之后,我继续使用“名称”。现在第 5 行和第 6 行也具有相同的值,然后我检查“etc2”中的值是否相同。它们是,所以我需要找到这两行中所有列的平均值。
例如,我有这样的数据
dat <- read.table(text='name value etc1 etc2
A 9 20 X
A 10 10 X
A 11 1 Y
B 2 5 Y
C 40 40 Y
C 50 2 Y',header=TRUE)
而我最终需要的是这个
name value etc1 etc2
A 9.5 15 X
A 11 1 Y
B 2 5 Y
C 99.5 21 Y
我的数据集包含很多行和列,所以我正在寻找更通用的解决方案。我尝试过应用程序来查找重复值,然后在 ifelse 中使用这个数字来获取列总和,但运气不佳。
apply(df, MARGIN = 2, FUN = duplicated)
nx <- which(apply(df, MARGIN = 2, FUN = duplicated))[1]
df[1, nx] # the duplicated value
ifelse(is.element(df[, 4], df[1, nx]) == TRUE, yes = colwise(mean, (df[, 1:4]), no = print("No")))
从这里开始或多或少地卡住了
【问题讨论】:
-
我认为您的期望输出有误。
标签: r duplicates apply