1

我有一个包含一周数据的 ascii 文件。此数据是一个文本文件,没有标题名称。我目前使用 R 几乎完成了一个较小的任务,并且也使用 Python 进行了一些尝试。作为两者的专业人士,这是一个陡峭的学习曲线。这是我的数据/代码,用于根据我在 R 中创建但不工作的特定字符序列将行粘贴在一起。

每列包含不同的数据,但行数据是最重要的。例如:

    column 1       column 2     column 3   column 4
Row 1 Name         Age           YR Birth    Date 
Row 2 Middle Name School name    siblings    # of siblings 
Row 3 Last Name     street number  street address
Row 4 Name         Age           YR Birth    Date 
Row 5 Middle Name School name    siblings    # of siblings 
Row 6 Last Name     street number  street address
Row 7 Name         Age           YR Birth    Date 
Row 8 Middle Name School name    siblings    # of siblings 
Row 9 Last Name     street number  street address 

我有一个文件夹可以迭代或循环某些文件包含 100 行,而其他文件包含 1000 行。我编写了一个代码,它删除了我不需要的所有行,并写入一个新的 .csv 但是,任何粘贴和/或合并都不会产生理想的结果。

我需要的是一个代码,用于从整个文件中仅选择名称和姓氏行(及其相邻数据)并将姓氏行粘贴到名称行的末尾。每个文件的列数相同,但行数不同。

我将文件保存到数据框中,并尝试合并/粘贴/绑定(r 和 c)行/列,结果仍然不符合我的需要。到目前为止,Rbind 工作得最好,但不是在同一行上一个接一个地粘贴行来生成数据,而是将它们彼此并排粘贴在这样的列中:即:

Name Last Name        Name   Last Name     Name    Last Name 
Age   Street Num      Age    Street Num     Age   Street Num
YR    Street address  YR    Street address  YR    Street address
Birth    NA            Birth    NA           Birth    NA
Date     NA            Date     NA           Date     NA

我试图 rbind 他们或家人 [c(Name, Age, YR Birth...)] 但我没有成功。我查看了我有多少列,并尝试添加更多列来解释粘贴,而是使用第 1 行的数据填充。

我真的很茫然,如果有人能提供一些见解,我会非常感激。我比一些人新,但不像其他人那么新。我实现的结果如下所示:

Name Age  YR Birth date Last Name Street Num Street Address NA NA
Name Age  YR Birth date Last Name Street Num Street Address NA NA
Name Age  YR Birth date Last Name Street Num Street Address NA NA

代码尝试:

rowData <- rbind(name$Name, name$Age, name$YRBirth, name$Date)

colData <- cbind(name$V1 == "Name", name$V1 == "Last Name")

合并和粘贴也不起作用。我试图将每个变量创建为新的数据框,但仍然没有达到我想要的结果。有没有人有任何见解?

4

1 回答 1

0

好的,所以如果我正确理解您的情况,您想首先对数据进行切片并从第一行开始每隔三行提取一次,然后从第三行开始每第三行提取一次。我会这样做(假设您的数据位于df

df1 <- df[3*(1:(nrow(df)/3)) - 2,]
df2 <- df[3*(1:(nrow(df)/3)),]

一旦你有了这些,你可以把它们拍在一起,但不要使用rbind你想使用的cbind. 然后您可以删除 NA 列并重命名它们。

df3 <- cbind(df1,df2)
df3 <- df3[1:7]
colnames(df3) <- c("Name", "Age", "YR", "Birth date", "Last Name", "Street Num", "Street Address")
于 2020-10-27T14:21:19.253 回答