【问题标题】:does strsplit delete some part of data?strsplit 会删除部分数据吗?
【发布时间】:2019-06-19 07:08:18
【问题描述】:

当我拆分一列时,我有一个包含 66366 行的数据框,我得到一个包含 66347 行的数据框。 这是我数据的一部分:

id        title
3376971   چوب شور آلبينا شيرين عسل
3376989   ويفر رنگارنگ مينو
3376990   کوکي مينو

这是我用来分割标题的代码:

word_df <- data.frame(df,do.call('rbind',strsplit(as.character(df$title),' ',fixed=TRUE)))

我明白了:(第一行)

x1  x2     x3      x4 x5
چوب شور آلبينا شيرين عسل

如何将其拆分并在第一行的新数据框中也有它们的 id:

id        x1  x2     x3      x4 x5
3376971   چوب شور آلبينا شيرين عسل

这样至少我会明白删除哪个id

【问题讨论】:

    标签: r split


    【解决方案1】:

    由于我们在空格处进行拆分,并且'title'的每个元素中的空格数不一样,我们可以用NA填充拆分元素以使长度相同,然后执行rbind

    lst1 <- strsplit(as.character(df$title),' ',fixed=TRUE)
    cbind(df['id'], do.call(rbind, lapply(lst1, `length<-`, max(lengths(lst1)))))
    

    也可以使用read.table

    cbind(df['id'], read.table(text = as.character(df$title),
           header = FALSE, fill = TRUE))
    

    【讨论】:

    • @arkun,我收到此错误Error in data.frame(..., check.names = FALSE) : arguments imply differing number of rows: 66366, 66347
    • @mahnazmohammadi 你能试试更新后的帖子吗
    • @mahnazmohammadi 我检查了一个示例数据,它对我来说工作正常
    • @arkun ,当我尝试这个 lst1 &lt;- strsplit(as.character(df$title),' ',fixed=TRUE) cbind(df['id'], do.call(rbind, lapply(lst1, length, max(lengths(lst1))))) 正如你所建议的那样它不会删除我的数据时,非常感谢它对我的帮助很大。
    • @mahnazmohammadi 很高兴知道它有效。我试图复制/粘贴您的示例,但它是从右到左的
    猜你喜欢
    • 1970-01-01
    • 2013-08-26
    • 1970-01-01
    • 2020-12-14
    • 2018-08-13
    • 1970-01-01
    • 2021-04-17
    • 2018-05-18
    • 2021-10-23
    相关资源
    最近更新 更多