为数据框中的每个因素创建一个 table
Create a table for each factor in dataframe
我有一个如下所示的数据框:
>head(df)
Number Label
1 2 1-5
2 2 1-5
3 0 1-5
4 2 1-5
5 1 1-12
6 0 1-1
我想为每个标签创建一个 table。所以最后的成品是这样的:
Label Number Frequency
1-5 2 3
1-5 0 1
1-12 1 1
1-1 0 1
目前,我可以使用基数 R 在多行中执行此操作,例如
df2 <- df[df$Label=="1-1", ]
final.df <- as.data.frame(table(df2$Number))
我对每个标签反复执行此操作。这是超级低效的。有没有办法更有效地做到这一点?
感谢帮助!
可以通过dplyr
轻松获得
library(dplyr)
df %>%
group_by(Label,Number) %>%
summarise(Frequency=n(),.groups='drop')
输出;
Label Number Frequency
<fct> <int> <int>
1 1-1 0 1
2 1-12 1 1
3 1-5 0 1
4 1-5 2 3
除了Samet的方法,还可以使用dplyr中的count
library(dplyr)
df %>%
count(Label, Number, name="Frequency", sort=TRUE)
输出:
Label Number Frequency
<chr> <dbl> <int>
1 1-5 2 3
2 1-1 0 1
3 1-12 1 1
4 1-5 0 1
我有一个如下所示的数据框:
>head(df)
Number Label
1 2 1-5
2 2 1-5
3 0 1-5
4 2 1-5
5 1 1-12
6 0 1-1
我想为每个标签创建一个 table。所以最后的成品是这样的:
Label Number Frequency
1-5 2 3
1-5 0 1
1-12 1 1
1-1 0 1
目前,我可以使用基数 R 在多行中执行此操作,例如
df2 <- df[df$Label=="1-1", ]
final.df <- as.data.frame(table(df2$Number))
我对每个标签反复执行此操作。这是超级低效的。有没有办法更有效地做到这一点?
感谢帮助!
可以通过dplyr
library(dplyr)
df %>%
group_by(Label,Number) %>%
summarise(Frequency=n(),.groups='drop')
输出;
Label Number Frequency
<fct> <int> <int>
1 1-1 0 1
2 1-12 1 1
3 1-5 0 1
4 1-5 2 3
除了Samet的方法,还可以使用dplyr中的count
library(dplyr)
df %>%
count(Label, Number, name="Frequency", sort=TRUE)
输出:
Label Number Frequency
<chr> <dbl> <int>
1 1-5 2 3
2 1-1 0 1
3 1-12 1 1
4 1-5 0 1