R中一列中每一行的平均值(/ 2)
Average (/2) of each row in ONE column in R
DF
ID B C D
1 A 1 1 3
2 B 2 3 1
3 C 1 1 1
4 D 3 1 1
5 E 1 0 0
给定上述数据框,如何快速计算一列中每一行的均值并将它们存储在数据框的另一列中?例如,B 列的平均值为:0.5、1、0.5、1,5、0.5。
是否可以有一个函数可以同时自动对多个列执行此操作?
选项是从'ID'中获取匹配的行元素以用值
划分列
f1 <- function(dat, colNm) transform(dat,
newCol = dat[[colNm]]/dat[match(colNm, ID), colNm])
f1(DF, 'B')
# ID B C D newCol
#1 A 1 1 3 0.5
#2 B 2 3 1 1.0
#3 C 1 1 1 0.5
#4 D 3 1 1 1.5
#5 E 1 0 0 0.5
如果是除以一个常数值,那么就做
DF[-1] <- DF[-1]/2
数据
DF <- structure(list(ID = c("A", "B", "C", "D", "E"), B = c(1L, 2L,
1L, 3L, 1L), C = c(1L, 3L, 1L, 1L, 0L), D = c(3L, 1L, 1L, 1L,
0L)), class = "data.frame", row.names = c("1", "2", "3", "4",
"5"))
DF
ID B C D
1 A 1 1 3
2 B 2 3 1
3 C 1 1 1
4 D 3 1 1
5 E 1 0 0
给定上述数据框,如何快速计算一列中每一行的均值并将它们存储在数据框的另一列中?例如,B 列的平均值为:0.5、1、0.5、1,5、0.5。 是否可以有一个函数可以同时自动对多个列执行此操作?
选项是从'ID'中获取匹配的行元素以用值
划分列f1 <- function(dat, colNm) transform(dat,
newCol = dat[[colNm]]/dat[match(colNm, ID), colNm])
f1(DF, 'B')
# ID B C D newCol
#1 A 1 1 3 0.5
#2 B 2 3 1 1.0
#3 C 1 1 1 0.5
#4 D 3 1 1 1.5
#5 E 1 0 0 0.5
如果是除以一个常数值,那么就做
DF[-1] <- DF[-1]/2
数据
DF <- structure(list(ID = c("A", "B", "C", "D", "E"), B = c(1L, 2L,
1L, 3L, 1L), C = c(1L, 3L, 1L, 1L, 0L), D = c(3L, 1L, 1L, 1L,
0L)), class = "data.frame", row.names = c("1", "2", "3", "4",
"5"))