我有一个这样的数据集:
data <- read.csv(text = "foo,bar
a,b
a,a
b,c
c,a
c,b")
Run Code Online (Sandbox Code Playgroud)
我想计算一个表,告诉我每个可能值出现的行数,所以像这样:
| 价值 | 数数 |
|---|---|
| A | 3 |
| 乙 | 3 |
| C | 3 |
我尝试使用 dplyr 按两列进行分组,然后进行汇总,但这不会为您提供每个值的计数,而是每个列值的计数。任何想法?
获取unique每行的unlist结果并用于table获取计数。
table(unlist(apply(data, 1, unique)))
#a b c
#3 3 3
Run Code Online (Sandbox Code Playgroud)
或者相同但使用管道。
apply(data, 1, unique) |> unlist() |> table()
#a b c
#3 3 3
Run Code Online (Sandbox Code Playgroud)
使用dplyr、tibble和tidyr,您可以执行以下操作:
data %>%
mutate(across(everything(), trimws)) %>%
rowid_to_column() %>%
pivot_longer(-rowid) %>%
group_by(value) %>%
summarise(n = n_distinct(rowid))
value n
<chr> <int>
1 a 3
2 b 3
3 c 3
Run Code Online (Sandbox Code Playgroud)
read.csv(text="foo,bar\n a,b\n a,a\n b,c\n c,a\n c,b", strip.white = TRUE) |>\n mutate(id = row_number()) |>\n pivot_longer(cols = -id) |>\n distinct(id, value) |>\n count(value)\n# # A tibble: 3 \xc3\x97 2\n# value n\n# <chr> <int>\n# 1 a 3\n# 2 b 3\n# 3 c 3\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
395 次 |
| 最近记录: |