我是学习 R 过程中的初学者,我有一个包含书名和作者的数据集,我将其用作清理数据的练习。在该过程的一部分中,我想将“author”列分成“first_name”和“last_name”。
当我执行此任务时,我收到以下消息:
警告信息:
预计2件。 18 行中丢弃的额外棋子
[4, 12, 16, 17, 21, 23, 28, 34, 41, 43, 46, 60, 65, 67, 73, 79, 82, 84].
回顾数据,我可以发现错误主要发生在具有中间名或中间首字母的作者(例如 Louisa May Alcot)。我想在清理之前查找警告消息中所述的行以删除额外的空格。有办法做到这一点吗?
我尝试使用
df [4,12,16,17,21,23,28,34,41,43,36,60,65,67,73,79,82,84]
但我收到一条错误消息,因为 R 试图将它们作为列提取出来,而数据集没有那么多列。我已经浏览了一些搜索板来查找执行此任务所需的代码,但我遇到的解决方案并不完全适用于该问题,而且似乎比他们需要的更复杂。
有没有简单的方法可以解决这个问题?或者我应该以不同的方式处理数据?
扩展我的评论,这是我的意思的一个例子:
library(dplyr)
df <- data.frame(name = c("Jane Doe", "Louisa May Alcot"))
df |>
mutate(last_name = sub(".*\\s", "", name),
first_name = sub("(.*)\\s(.*)$", "\\1", name))
# name last_name first_name
# 1 Jane Doe Doe Jane
# 2 Louisa May Alcot Alcot Louisa May