R中有一个数据表,一列为用户ID,一列为0-23之间的某一个数,第三列为第二列数的频数,如何统计0-23分别的频数,并生成数据表,第一列为ID,第2-25列保存为0-23分别的频数
时间: 2024-03-18 21:42:26 浏览: 19
可以使用tidyr包中的spread函数将数据按照要求重新排列。假设数据表为df,第一列为userID,第二列为column2,第三列为frequency,则代码如下:
```
library(tidyr)
df %>%
group_by(column2) %>%
summarize_all(sum) %>%
spread(column2, frequency, fill = 0)
```
这段代码将会输出0-23分别的频数,并将结果保存为第一列为ID,第2-25列保存为0-23分别的频数。其中,group_by函数用于按照column2分组,summarize_all函数用于对每一列进行求和,spread函数则将数据按照要求重新排列,将column2中的数作为列名,frequency作为值,并将缺失值用0填充。
相关问题
R中有一个数据表,一列为用户ID,一列为0-23之间的某一个数,第三列为第二列数的频数,如何分别统计0-23的频数
可以使用base R中的tapply函数来统计0-23的频数。假设数据表为df,第一列为userID,第二列为column2,第三列为frequency,则代码如下:
```
tapply(df$frequency, df$column2, sum)
```
这段代码将会输出0-23分别的频数。其中,tapply函数用于对df$frequency按照df$column2进行分组,并对每个分组进行求和。
R中有一个数据表,一列为用户ID,一列为0-23之间的某一个数,第三列为第二列数的频数,如何将数据表转换为第一列为ID,第2-25列保存为0-23分别的频数
可以使用dplyr包中的group_by和summarize函数来统计每个用户ID下每个数的频数,并使用tidyr包中的pivot_wider函数将数据按照要求重新排列。假设数据表为df,第一列为userID,第二列为column2,第三列为frequency,则代码如下:
```
library(dplyr)
library(tidyr)
df %>%
group_by(userID, column2) %>%
summarize(frequency = sum(frequency)) %>%
mutate(column2 = paste0("col", column2)) %>%
pivot_wider(names_from = column2, values_from = frequency, values_fill = 0)
```
这段代码将会输出每个用户ID下每个数的频数,并将结果保存为第一列为ID,第2-25列保存为0-23分别的频数。其中,summarize函数用于对每个用户ID下的每个数进行求和,mutate函数用于将column2列的数转换为"col+数字"的形式,pivot_wider函数则将数据按照userID进行重新排列,将"col+数字"作为列名,frequency作为值,并将缺失值用0填充。