将累积百分比减少到多列

时间:2015-01-01 18:37:05

标签: r

[编辑]我想知道如何按累积百分比削减一系列列。我有一个数据集,其列数范围与每个教育水平的调查受访者总数,1-5。有些行在第4或第5列中没有受访者,因为调查没有询问该级别的教育(只有他们完成了超过3日的学校)。

我想根据每列的累积百分比将5列合并为4列(这样每行都有完整的列,并按照教育数量的相对顺序排列)

以下是一些模拟数据(edu1_fav表示受教育程度1的受访者在某一年内赞成某项法律):

set.seed(123)
Data <- data.frame(
  year = sample(1998:2004, 200, replace = TRUE),
  edu1_fav = sample(1:10, 200, replace = TRUE),
  edu2_fav = sample(1:10, 200, replace = TRUE),
  edu3_fav = sample(0:5,  200, replace = TRUE),
  edu4_fav = sample(0:5,  200, replace = TRUE),
  edu5_fav = sample(0:5,  200, replace = TRUE),
  edu1_opp = sample(1:10, 200, replace = TRUE),
  edu2_opp = sample(1:10, 200, replace = TRUE),
  edu3_opp = sample(0:5,  200, replace = TRUE),
  edu4_opp = sample(0:5,  200, replace = TRUE),
  edu5_opp = sample(0:5,  200, replace = TRUE)
)
head(Data)
#   year edu1_fav edu2_fav edu3_fav edu4_fav edu5_fav edu1_opp edu2_opp edu3_opp
# 1 2000        3       10        1        2        1        9        3        3
# 2 2003       10        2        4        2        3        9        3        0
# 3 2000        7       10        1        0        0        5        1        1
# 4 2004        6        6        1        0        5        8        5        4
# 5 2004        5        4        1        1        5        5        3        4
# 6 1998        9        5        4        5        2       10        8        0
#   edu4_opp edu5_opp
# 1        0        0
# 2        5        0
# 3        1        0
# 4        4        3
# 5        3        2
# 6        0        3

认为最终数据框第一行的前3列看起来像这样:

year    edu1_fav   edu2_fav    edu3_fav edu4_fav
2000    10          5           9       7
pct     0.32    0      .48         0.77     1

基本上,列从5列缩短为4列。我在excel中使用累积百分比来手动计算这些行。

我之前问过这个问题,但是它被严重诬陷了。我希望他更有意义。我已经查找了几个教程,但一直无法找到如何按行生成累积百分比,然后根据这些百分比合并列。

0 个答案:

没有答案