我想从名为'birds'的变量的平均值中减去每个变量的平均值,并创建一个包含结果的新数据框。在我的实际数据框中,我有数百个变量,所以我想自动完成。任何想法怎么做? 我尝试使用这行代码而没有平均函数,它可以工作(在同一个数据框上):
setNames(as.data.frame(cbind(g, mean(dat$birds)-mean(dat))), c(names(dat), paste0(names(dat),'_new')))
但我不明白如何使用mean
作为代码的一部分,我试过:
setNames(as.data.frame(cbind(g, mean(dat$birds)-mean(dat))), c(names(dat), paste0(names(dat),'_new')))
这是我的玩具数据框。
dat <- read.table(text = " birds wolfs snakes
3 9 7
3 8 4
1 2 8
1 2 3
1 8 3
6 1 2
6 7 1
6 1 5
5 9 7
3 8 7
4 2 7
1 2 3
7 6 3
6 1 1
6 3 9
6 1 1 ",header = TRUE)
答案 0 :(得分:3)
我希望我能正确理解你的问题。 这应该创建一个新对象,在这种情况下 - 只是一个向量,其中“birds”列的意思是从其他列的平均值中减去。这也适用于任何大小的数据框。
mean=mean(dat$birds)
dat2=colMeans(dat[2:dim(dat)[2]])-mean
将来,请提供可重复的示例(在您的代码中,未定义对象'g')和预期输出的示例,以便明确您要实现的目标。