[编辑]我想知道如何按累积百分比削减一系列列。我有一个数据集,其列数范围与每个教育水平的调查受访者总数,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中使用累积百分比来手动计算这些行。
我之前问过这个问题,但是它被严重诬陷了。我希望他更有意义。我已经查找了几个教程,但一直无法找到如何按行生成累积百分比,然后根据这些百分比合并列。