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