Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何向数据表中添加一列以显示多个其他列的总和';价值观_R - Fatal编程技术网

R 如何向数据表中添加一列以显示多个其他列的总和';价值观

R 如何向数据表中添加一列以显示多个其他列的总和';价值观,r,R,我有8个年龄组,每个年龄组都有自己的列(即5岁以下的居民、6岁至12岁的居民等)。每个列的值在0到3之间,表示该特定年龄组家庭中的人数。 我想要的是一个新的列,我可以用它在柱状图上画出我的人口年龄的总分布。所以我想到了一个列,其中有66行居民在5下,32行居民在6到12之间,等等,作为这些类别的总和 我的数据如下所示: a b c d 0 3 2 1 1 3 2 1 2 0 2 1 3 1 0 0 我想要的是列e,显示: e a a a a b b b b b c c c d d d 其他

我有8个年龄组,每个年龄组都有自己的列(即5岁以下的居民、6岁至12岁的居民等)。每个列的值在0到3之间,表示该特定年龄组家庭中的人数。 我想要的是一个新的列,我可以用它在柱状图上画出我的人口年龄的总分布。所以我想到了一个列,其中有66行居民在5下,32行居民在6到12之间,等等,作为这些类别的总和

我的数据如下所示:

a b c d 
0 3 2 1
1 3 2 1
2 0 2 1
3 1 0 0
我想要的是列e,显示:

e
a
a
a
a
b
b
b
b
b
c
c
c
d
d
d
其他列中发生的总次数

我尝试过用
sum(第5列下的居民)声明新列
,但这会给我一行66(作为该类别的总和)。我无法用这样的列绘制直方图。我希望有人能弄明白

这是相关列的dput()

residents_under_5 = c(0, 0, 0, 1, 1, 2), 
residents_6_to_12 = c(0, 0, 0, 0, 0, 0), 
        residents_13_to_18 = c(0, 0, 0, 0, 0, 0), 
residents_19_to_24 = c(0, 
        0, 0, 0, 0, 0), 
residents_25_to_34 = c(0, 1, 2, 0, 1, 0), 
       residents_35_to_49 = c(0, 0, 0, 2, 1, 2), 
residents_50_to_64 = c(0, 
        1, 0, 0, 0, 0), 
residents_65_and_older = c(2, 0, 0, 0, 1, 
        0)

您可以
unlist
数据帧,使用
table
计算频率,然后使用
rep
重复
letters

rep(letters[seq_len(ncol(df))], colSums(df))
数据

df <- data.frame(residents_under_5 = c(0, 0, 0, 1, 1, 2), 
                 residents_6_to_12 = c(0, 0, 0, 0, 0, 0), 
                 residents_13_to_18 = c(0, 0, 0, 0, 0, 0), 
                 residents_19_to_24 = c(0, 0, 0, 0, 0, 0), 
                 residents_25_to_34 = c(0, 1, 2, 0, 1, 0), 
                 residents_35_to_49 = c(0, 0, 0, 2, 1, 2), 
                 residents_50_to_64 = c(0, 1, 0, 0, 0, 0), 
                 residents_65_and_older = c(2, 0, 0, 0, 1, 0))

df您可以
取消列出
数据帧,使用
表格
计算频率,然后使用
rep
重复字母

rep(letters[seq_len(ncol(df))], colSums(df))
数据

df <- data.frame(residents_under_5 = c(0, 0, 0, 1, 1, 2), 
                 residents_6_to_12 = c(0, 0, 0, 0, 0, 0), 
                 residents_13_to_18 = c(0, 0, 0, 0, 0, 0), 
                 residents_19_to_24 = c(0, 0, 0, 0, 0, 0), 
                 residents_25_to_34 = c(0, 1, 2, 0, 1, 0), 
                 residents_35_to_49 = c(0, 0, 0, 2, 1, 2), 
                 residents_50_to_64 = c(0, 1, 0, 0, 0, 0), 
                 residents_65_and_older = c(2, 0, 0, 0, 1, 0))

df在
tidyverse
中的一个选项是使用
summary\u all
获取所有列的
sum
collect
为“long”格式,以及
uncount
为“value”列

library(tidyverse)
df1 %>% 
   summarise_all(sum) %>%
   gather %>% 
   uncount(value)
数据
df1在
tidyverse
中的一个选项是使用
summary\u all
获取所有列的
sum
collect
为“long”格式,以及
uncount
为“value”列

library(tidyverse)
df1 %>% 
   summarise_all(sum) %>%
   gather %>% 
   uncount(value)
数据
df1类似这样的东西:?我刚刚提供了一些显示我的问题的数据你可以提供基本数据集的dput()吗?提供@randallhelmsso类似的方法:?我刚刚提供了一些显示我的问题的数据你可以提供dput()吗您的基础数据集的名称?如果是@RandallHelmsd,这是否也适用于数据表?我有比这4个更多的列,如何仅指定相关列?我是否只写“名称”,或者应该改为什么?谢谢!@BenGill这将考虑所有列,无论是4列还是100列。如果需要,您可能需要对这些列进行子集t忽略它们。例如,要忽略第一列,我们可以执行
rep(name(df)[-1],table(unlist(df)[-1]))
显然它不起作用,因为我的数据集中有负值(错误:无效的'times'参数)@BenGill我将使用相关列的
dput
创建一个新的数据框,并更新答案,您现在可以检查吗?它给我5000行“a”这也适用于数据表吗?我有比这4个更多的列,如何只指定相关列?我是只写“名称”,还是应该写什么?谢谢!@BenGill这考虑了所有列,无论是4列还是100列。如果要忽略它们,可能需要对列进行子集。例如,忽略第1列umn我们可能会做
rep(names(df)[-1],table(unlist(df)[-1]))
显然它不起作用,因为我的数据集中有负值(错误:无效的'times'参数)@BenGill我使用相关列的
dput
创建了一个新的数据框,并更新了答案,你能检查一下吗?它给我5000行“a”