12
當列的元素具有不同數量的字符串時,我在拆分列值時出現問題。我能做到這一點的plyr例如爲:如何通過執行函數來對某些列中的不同數量的字符串進行分解
library(plyr)
column <- c("jake", "jane jane","john john john")
df <- data.frame(1:3, name = column)
df$name <- as.character(df$name)
df2 <- ldply(strsplit(df$name, " "), rbind)
View(df2)
其結果是,我們有一個與在給定元素刺的最大數列的數數據幀。
當我試圖做到這一點在dplyr,我用do
功能:
library(dplyr)
df2 <- df %>%
do(data.frame(strsplit(.$name, " ")))
,但我得到一個錯誤:
Error in data.frame("jake", c("jane", "jane"), c("john", "john", "john" : arguments imply differing number of rows: 1, 2, 3
在我看來,它應該被用來rbind
功能,但我不知道在哪裏。
好非常感謝。但是如果我們不知道列的給定元素中有多少個字符串呢? – Nicolabo 2014-12-01 22:55:41
如果你不知道有多少列,那麼我會使用'cSplit',因爲它確實對你有用。順便問一下,第一個問題很好。清楚地問及可重複性。 +1 – 2014-12-01 22:58:55
@Nicolabo,你可以先使用'stringr :: str_count'來確定最大值。沒有你需要的列,然後使用'tidyr :: separate'。像這樣 - 'LEN = MAX(str_count(字符串= DF $名稱,圖案= 「 」));' 'vec_names = paste0(「 X」,1:(LEN + 1));' '獨立(df [-1],name,vec_names,「」,extra =「merge」);' – steadyfish 2015-09-27 18:20:50