有R函数可以选择特定的行号吗?

问题描述 投票:0回答:1

我是学习 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 试图将它们作为列提取出来,而数据集没有那么多列。我已经浏览了一些搜索板来查找执行此任务所需的代码,但我遇到的解决方案并不完全适用于该问题,而且似乎比他们需要的更复杂。

有没有简单的方法可以解决这个问题?或者我应该以不同的方式处理数据?

r row data-cleaning
1个回答
0
投票

扩展我的评论,这是我的意思的一个例子:

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
© www.soinside.com 2019 - 2024. All rights reserved.