我有一个子集。我想聚合业余爱好列,以便每个业余爱好都有自己的列名和值。最好的结果应该是第二步。但如果你能帮我解决第一步,我也会很高兴。这个子集总共有25个值。在步骤2中,我通过在子集中除以count/ttl计数来获得百分比值。例如,playGolf的百分比是2/25=8%。(注意:我已经用NA替换了空行,并将其保留为列。)
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:
country playGolf Reading Cycling Surfing Gaming Running PreNSay NA
Russia 2 13 1 1 3 2 2 1预期步骤2:
country playGolf(%) Reading(%) Cycling(%) Surfing(%) Gaming(%) Running(%) PreNSay(%) NA(%)
Russia 8 52 4 4 12 8 8 4在此之后,我将把它与其他类似的子集组合在一起(但我可以通过myslef处理它):
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...我怎么发动汽车呢?谢谢!
发布于 2020-12-13 04:08:10
我们可以使用table来获取频率计数
table(df1)-output
# hobby
#country Cycling Gaming Play Golf Prefer not say Reading Running Surfing
# Russia 1 3 2 2 13 2 1要获得使用prop.table的百分比
round(100 *prop.table(table(df1)))-output
# hobby
#country Cycling Gaming Play Golf Prefer not say Reading Running Surfing
# Russia 4 12 8 8 54 8 4数据
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"))https://stackoverflow.com/questions/65269282
复制相似问题