我想遍歷數據框中的列並將它們拆分爲基於分隔符的列。我使用的是tidyr::separate
,這個功能一次只能處理一列。將tidyr ::分開放在多列上
例如:
df<- data.frame(a = c("5312,2020,1212"), b = c("345,982,284"))
df <- separate(data = df, col = "a",
into = paste("a", c("col1", "col2", "col3"),
sep = "_"), sep = ",")
返回:
a_col1 a_col2 a_col3 b
1 5312 2020 1212 345,982,284
當我嘗試過df
R每次列執行相同的操作返回一個錯誤
例如我用這對迴路:
for(col in names(df)){
df <- separate(data = df, col = col,
into = paste(col, c("col1", "col2", "col3),
sep = "_"), sep = ",")
}
我期待得到以下的輸出:
a_col1 a_col2 a_col3 b_col1 b_col2 b_col3
1 5312 2020 1212 345 982 284
然而[R返回此錯誤:
Error in if (!after) c(values, x) else if (after >= lengx) c(x, values) else c(x[1L:after], :
argument is of length zero
是否有一個數據幀申請tidyr::separate
在多個列的另一種方式?
'DF%>%聚集() %>%separate_rows(value)%>%mutate(key = paste0(key,'_col',1:3))%>%spread(key,value)',但這並不比調用'separate'兩次簡單。 – alistaire
...或者你可以用SE'separate_'修飾你的原稿,例如'for(name in name(df))df < - separate_(df,name,into = paste0(name,'_col',1:3 ))',但那種風格讓我非常不安。 – alistaire