Tôi có một vấn đề với giá trị cột chia khi yếu tố của cột có số lượng khác nhau của chuỗi. Tôi có thể làm điều đó trong plyr ví dụ:Làm thế nào để strsplit số lượng khác nhau của chuỗi trong cột nhất định bằng cách làm chức năng
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)
Kết quả là, chúng tôi có khung dữ liệu liên quan đến số lượng tối đa các phần tử đã cho trong phần tử đã cho.
Khi tôi cố gắng làm điều đó trong dplyr, tôi sử dụng do
chức năng:
library(dplyr)
df2 <- df %>%
do(data.frame(strsplit(.$name, " ")))
nhưng tôi nhận được một lỗi:
Error in data.frame("jake", c("jane", "jane"), c("john", "john", "john" : arguments imply differing number of rows: 1, 2, 3
Dường như với tôi rằng nó nên được sử dụng rbind
chức năng nhưng Tôi không biết ở đâu.
nhờ Ok rất nhiều. Nhưng nếu chúng ta không biết có bao nhiêu chuỗi trong thành phần của cột? – Nicolabo
Nếu bạn không biết có bao nhiêu cột sẽ có, thì tôi sẽ sử dụng 'cSplit' vì nó làm việc cho bạn. Nice câu hỏi đầu tiên bằng cách này. Yêu cầu và tái sản xuất rõ ràng. +1 –
@Nicolabo, Trước tiên bạn có thể sử dụng 'stringr :: str_count' để xác định giá trị CPC không có cột nào bạn cần và sau đó sử dụng 'tidyr :: tách biệt'. Một cái gì đó như thế này - 'len = max (str_count (string = df $ name, pattern =" "));' 'vec_names = paste0 (" X ", 1: (len + 1)); ' ' riêng biệt (df [-1], tên, vec_names, "", thêm = "hợp nhất"); ' – steadyfish