我希望将重复的主题组合在一起,但是我的一些数据是数字的,有些是绝对的。分类值是重复的,但数值数据可能不同。我想平均数值数据但合并分类数据。
例如:
Subject A B
1 L 1
1 L 0
2 R 1
2 R 1
3 L 0
3 L 1
4 R 1
4 R 1
这就是我想要的样子:
Subject A B
1 L 0.5
2 R 1
3 L 0.5
4 R 1
我尝试使用aggregate()但由于A列是非数字数据,因此无法正常工作。
关于如何解决这个问题的想法? 谢谢!
答案 0 :(得分:0)
使用data.table
:
df <- read.table(text = "Subject A B
1 L 1
1 L 0
2 R 1
2 R 1
3 L 0
3 L 1
4 R 1
4 R 1",
header = TRUE, stringsAsFactors = FALSE)
library(data.table)
setDT(df)
df[, id := .N, by = c("Subject", "A")]
df[, avg := sum(B) / id, by = c("Subject", "A")]
df[, c("B", "id") := NULL]
df <- unique(df)
setnames(df, "avg", "B")
Subject A B
1: 1 L 0.5
2: 2 R 1.0
3: 3 L 0.5
4: 4 R 1.0
答案 1 :(得分:0)
您可以使用dplyr
。
library(dplyr)
df2 <- df1 %>%
group_by(Subject, A) %>%
summarize_if(is.numeric, mean) %>%
data.frame() # if you want a data frame
<强>产率:强>
> df2
Subject A B
1 1 L 0.5
2 2 R 1.0
3 3 L 0.5
4 4 R 1.0