首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >根据字符串名称聚合子集的值,并在R中计算该值的百分比

根据字符串名称聚合子集的值,并在R中计算该值的百分比
EN

Stack Overflow用户
提问于 2020-12-13 04:03:24
回答 1查看 33关注 0票数 0

我有一个子集。我想聚合业余爱好列,以便每个业余爱好都有自己的列名和值。最好的结果应该是第二步。但如果你能帮我解决第一步,我也会很高兴。这个子集总共有25个值。在步骤2中,我通过在子集中除以count/ttl计数来获得百分比值。例如,playGolf的百分比是2/25=8%。(注意:我已经用NA替换了空行,并将其保留为列。)

代码语言:javascript
运行
复制
df:

     country hobby
     <chr>  <chr>
7   Russia  Play Golf
12  Russia  Reading
17  Russia  Reading
20  Russia  Reading
21  Russia  Reading
22  Russia  Cycling
28  Russia  Reading
33  Russia  Reading
35  Russia  Reading
41  Russia  Surfing
48  Russia  NA
61  Russia  Gaming
65  Russia  Reading
70  Russia  Running
74  Russia  Reading
79  Russia  Running
86  Russia  Reading
87  Russia  Gaming
90  Russia  Reading
92  Russia  Prefer not say
95  Russia  Play Golf
96  Russia  Gaming
97  Russia  Reading
98  Russia  Prefer not say
108 Russia  Reading

预期步骤1:

代码语言:javascript
运行
复制
country    playGolf    Reading    Cycling   Surfing   Gaming  Running     PreNSay     NA

Russia        2         13          1           1       3        2           2         1

预期步骤2:

代码语言:javascript
运行
复制
country  playGolf(%) Reading(%) Cycling(%) Surfing(%) Gaming(%) Running(%) PreNSay(%) NA(%)
 Russia       8         52        4            4           12       8          8        4

在此之后,我将把它与其他类似的子集组合在一起(但我可以通过myslef处理它):

代码语言:javascript
运行
复制
country  playGolf(%) Reading(%) Cycling(%) Surfing(%) Gaming(%) Running(%) PreNSay(%) NA(%)

 Russia       8         52        4            4           12       8          8        4
 Poland       12        24        3            5           10       2          5        1
   ..
 etc...

我怎么发动汽车呢?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-13 04:08:10

我们可以使用table来获取频率计数

代码语言:javascript
运行
复制
table(df1)

-output

代码语言:javascript
运行
复制
#  hobby
#country  Cycling Gaming Play Golf Prefer not say Reading Running Surfing
#  Russia       1      3         2              2      13       2       1

要获得使用prop.table的百分比

代码语言:javascript
运行
复制
round(100 *prop.table(table(df1)))

-output

代码语言:javascript
运行
复制
#   hobby
#country  Cycling Gaming Play Golf Prefer not say Reading Running Surfing
#  Russia       4     12         8              8      54       8       4

数据

代码语言:javascript
运行
复制
df1 <- structure(list(country = c("Russia", "Russia", "Russia", "Russia", 
"Russia", "Russia", "Russia", "Russia", "Russia", "Russia", "Russia", 
"Russia", "Russia", "Russia", "Russia", "Russia", "Russia", "Russia", 
"Russia", "Russia", "Russia", "Russia", "Russia", "Russia", "Russia"
), hobby = c("Play Golf", "Reading", "Reading", "Reading", "Reading", 
"Cycling", "Reading", "Reading", "Reading", "Surfing", NA, "Gaming", 
"Reading", "Running", "Reading", "Running", "Reading", "Gaming", 
"Reading", "Prefer not say", "Play Golf", "Gaming", "Reading", 
"Prefer not say", "Reading")), class = "data.frame", row.names = c("7", 
"12", "17", "20", "21", "22", "28", "33", "35", "41", "48", "61", 
"65", "70", "74", "79", "86", "87", "90", "92", "95", "96", "97", 
"98", "108"))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65269282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档