比方说,我有一个数据帧中的R如下:[R清洗和重新排序的名字/在数据帧序列号
Data <- data.frame("SerialNum" = character(), "Year" = integer(), "Name" = character(), stringsAsFactors = F)
Data[1,] <- c("983\n837\n424\n ", 2015, "Michael\nLewis\nPaul\n ")
Data[2,] <- c("123\n456\n789\n136", 2014, "Elaine\nJerry\nGeorge\nKramer")
Data[3,] <- c("987\n654\n321\n975\n ", 2010, "John\nPaul\nGeorge\nRingo\nNA")
Data[4,] <- c("424\n983\n837", 2015, "Paul\nMichael\nLewis")
Data[5,] <- c("456\n789\n123\n136", 2014, "Jerry\nGeorge\nElaine\nKramer")
我想要做的是以下几点:
- 分手了每个字符串的名称和序列号的每个字符串,以便它们是它们自己的向量(或字符串向量列表)。
- 消除任何一组载体中的任何字符
"NA"
或任何由"...\n "
表示的空白空间。 - 按字母顺序对每个名称列表重新排序,并根据相同的排列对相应的序列号重新排序。
- 以最初的相同方式连接每个矢量(我通常使用
paste(., collapse = "\n")
来完成此操作)。
我的问题是如何做到这一点,而不使用for循环。什么是面向对象的方式来做到这一点?作为这个方向的第一次尝试,我最初通过命令LIST <- strsplit(Data$Name, split = "\n")
创建了一个列表,并且从这里我需要一个for循环来查找名称的排列,这看起来像一个不会根据我的实际数据进行缩放的进程。此外,一旦我列出名单LIST
我不知道我如何去除NA
符号或空格。任何帮助表示赞赏!
谢谢您的回答,和对不起它采取了这么长时间才做出反应。我正在寻找的最终结果是看起来像原始数据框,除了按字母顺序排列和清理。如果我给出的样本数据集实际上只是一个较大数据框的摘录,那么您会如何做到这一点,但是我想在更大的数据框上执行此操作,同时保持所有其他字段不变? – Mnifldz