【发布时间】:2018-10-27 20:10:13
【问题描述】:
假设我有以下数据。
A <- c(4,4,4,4)
B <- c(1,2,3,4)
C <- c(1,2,4,4)
D <- c(3,2,4,1)
data <- as.data.frame(rbind(A,B,C,D))
data <- t(data)
data <- as.data.frame(data)
> data
A B C D
V1 4 1 1 3
V2 4 2 2 2
V3 4 3 4 4
V4 4 4 4 1
我希望在底部添加 2 行。我尝试了 rbind(data,colSums(data)) 但它给了我一个错误,而且我很难找到可以简单地添加一行的东西。
添加的第一行必须是每列中前 3 行的总和。 添加的第二行需要是每列中所有 4 行的总和。
所以输出应该是这样的:
> data
A B C D
V1 4 1 1 3
V2 4 2 2 2
V3 4 3 4 4
V4 4 4 4 1
V1:V3Sum 12 6 7 9
V1:V4Sum 16 10 11 10
如果您想尝试一下,我会尝试获取相对频率,因此再添加 5 行。
1 行将对应于列 (V1:V4) 中的每个值除以 v1:v5Sum 值(4 行)。然后第 5 行将是 v1:v3Sum 除以 v1:v5Sum。
> data
A B C D
V1 4 1 1 3
V2 4 2 2 2
V3 4 3 4 4
V4 4 4 4 1
V1:V3Sum 12 6 7 9
V1:V4Sum 16 10 11 10
relFreqV1 .25 .1 .09 .3 *each of these 4 rows is the value in
relFreqV2 .25 .2 .18 .2 row 1:4 divided by v1:v4Sum
relFreqV3 .25 .3 .36 .4
relFreqV4 .25 .4 .36 .1
relFreqTot .75 .6 .63 .9 * last row is v1:v3Sum divided by
V1:V4Sum
任何帮助都将不胜感激!!!
【问题讨论】:
-
仅供参考,
data <- as.data.frame(rbind(A,B,C,D)); data <- t(data); data <- as.data.frame(data)距离data.frame(A, B, C, D)有很长的路要走。如果您需要这些特定的行名,请使用row.names(data) = paste0("V", 1:nrow(data))
标签: r dplyr frequency cumsum summarize