将相同的值分组,并在R中的另一列中计算该值
我正在尝试对一个数据集进行排序,对此我有点不知所措 我希望获得此结果并将其保存到csv文件: 你知道怎么做吗?将相同的值分组,并在R中的另一列中计算该值,r,R,我正在尝试对一个数据集进行排序,对此我有点不知所措 我希望获得此结果并将其保存到csv文件: 你知道怎么做吗? 提前谢谢 您可以使用数据表轻松完成此操作: library(data.table) #create table ID <- c("ABC","BDE", "ABC","ABC","CDE") Movie_Code <- c("A10","A11","A12","A13","A14") df <- data.frame(ID, Movie_Code) #conver
提前谢谢 您可以使用数据表轻松完成此操作:
library(data.table)
#create table
ID <- c("ABC","BDE", "ABC","ABC","CDE")
Movie_Code <- c("A10","A11","A12","A13","A14")
df <- data.frame(ID, Movie_Code)
#convert to data table
df<-data.table(df)
setkey(df, ID)
final_tab<-df[, paste(unique(Movie_Code), collapse=", "),by=ID]
#CSV: comma separated values
From:使用
tidyverse
您可以根据您的ID
对您进行分组,然后总结
。使用collapse
指示要使用分隔符(在本例中为分号)进行粘贴的内容
library(tidyverse)
df %>%
group_by(ID) %>%
summarise(MovieCode = paste(MovieCode, collapse = ";"))
或在基数R中,使用聚合
:
aggregate(MovieCode ~ ID, df, paste, collapse = ";")
输出
ID MovieCode
1 ABC A10;A12;A13
2 BDE A11
3 CDE A14
数据
df <- structure(list(ID = c("ABC", "BDE", "ABC", "ABC", "CDE"), MovieCode = c("A10",
"A11", "A12", "A13", "A14")), class = "data.frame", row.names = c(NA,
-5L))
df这里有一个base R
解决方案:
说明性数据:
df <- data.frame(
v1 = c("ABA", "BCB", "ABA", "BCB", "DCD"),
v2 = letters[1:5]
)
实际列名电影代码(带空格;)
df <- data.frame(
v1 = c("ABA", "BCB", "ABA", "BCB", "DCD"),
v2 = letters[1:5]
)
df1 <- data.frame(
v1_unique = unique(df$v1),
v2_paste = tapply(df$v2, df$v1, paste0, collapse = ";"), row.names = NULL)
df1
v1_unique v2_paste
1 ABA a;c
2 BCB b;d
3 DCD e