如何为数据框的特定列创建一行 SD 值?
How do I create a row of SD values for specific columns of a data frame?
我有一个 160 x 250,000 的数据框。我想找到 R 中除第一列(249,999 列)以外的所有列的 SD。是否可以这样做并添加一行 SD 值?这些是 DNA 甲基化的探针 beta 值。
使用mtcars
:
mt <- mtcars[1:5,]
rbind(mt, "Standard Deviation" = c(NA, sapply(mt[,-1], sd)))
# mpg cyl disp hp drat wt qsec vs am gear carb
# Mazda RX4 21 6.0 160 110 3.90 2.62 16.5 0.00 1.00 4.00 4.0
# Mazda RX4 Wag 21 6.0 160 110 3.90 2.88 17.0 0.00 1.00 4.00 4.0
# Datsun 710 23 4.0 108 93 3.85 2.32 18.6 1.00 1.00 4.00 1.0
# Hornet 4 Drive 21 6.0 258 110 3.08 3.21 19.4 1.00 0.00 3.00 1.0
# Hornet Sportabout 19 8.0 360 175 3.15 3.44 17.0 0.00 0.00 3.00 2.0
# Standard Deviation NA 1.4 100 32 0.42 0.45 1.3 0.55 0.55 0.55 1.5
解释:
sapply(mt[,-1], sd)
在除第一个 mt[,-1]
之外的每一列上执行 sd
函数。因为这是 sapply
并且 return 值都是相同的“形状”和 class,所以这个 return 是一个向量。
c(NA, ..)
是因为我们没有第一列的 standard-dev ,但是因为我们是 row-binding 所以我们需要长度与第一列的数量相同mt
. 中的列
rbind(mt, ..)
是 row-binding 又名 row-concatenation。因为本例中mtcars
使用row-names来标识,所以我将stddev命名为"Standard Deviation"
。这对于您的数据可能没有必要或不合适。
我有一个 160 x 250,000 的数据框。我想找到 R 中除第一列(249,999 列)以外的所有列的 SD。是否可以这样做并添加一行 SD 值?这些是 DNA 甲基化的探针 beta 值。
使用mtcars
:
mt <- mtcars[1:5,]
rbind(mt, "Standard Deviation" = c(NA, sapply(mt[,-1], sd)))
# mpg cyl disp hp drat wt qsec vs am gear carb
# Mazda RX4 21 6.0 160 110 3.90 2.62 16.5 0.00 1.00 4.00 4.0
# Mazda RX4 Wag 21 6.0 160 110 3.90 2.88 17.0 0.00 1.00 4.00 4.0
# Datsun 710 23 4.0 108 93 3.85 2.32 18.6 1.00 1.00 4.00 1.0
# Hornet 4 Drive 21 6.0 258 110 3.08 3.21 19.4 1.00 0.00 3.00 1.0
# Hornet Sportabout 19 8.0 360 175 3.15 3.44 17.0 0.00 0.00 3.00 2.0
# Standard Deviation NA 1.4 100 32 0.42 0.45 1.3 0.55 0.55 0.55 1.5
解释:
sapply(mt[,-1], sd)
在除第一个mt[,-1]
之外的每一列上执行sd
函数。因为这是sapply
并且 return 值都是相同的“形状”和 class,所以这个 return 是一个向量。c(NA, ..)
是因为我们没有第一列的 standard-dev ,但是因为我们是 row-binding 所以我们需要长度与第一列的数量相同mt
. 中的列
rbind(mt, ..)
是 row-binding 又名 row-concatenation。因为本例中mtcars
使用row-names来标识,所以我将stddev命名为"Standard Deviation"
。这对于您的数据可能没有必要或不合适。