为每个单独的 R 导入具有重复列名的文件
Import file with repeated column names for each individual R
我必须将一个非正统文件导入 R。我附上了一个带有虚假数据的小示例文件来演示该问题。我需要整理的原始数据显示在图像“原始”中,我要创建的整理数据显示在图像“整洁”中。
RAW
整洁
每个人都有 (1) 适用于同一组内所有个人的组级别信息,以及 (2) 仅适用于各自个人的个人级别信息。在附件中,组级数据包括Family和Location。然后,根据组中有多少人,有与每个人相关的重复列集。
例如,第 2 行代表居住在芝加哥的史密斯一家。史密斯家族有 3 名成员,包括约翰、莎莉和本。每个成员都有自己的一组具有相同信息类型的重复列名称:姓名、年龄、性别, 爱好。这些列中的每一组都具有相同的名称,并且每个家庭最多重复 3 个人(总共 9 列)。
我需要的是将这些数据导入 R 并将其转换为整洁的格式,最好使用 tidyverse 解决方案。
感谢您的帮助!
也许最好的策略还取决于您输入原始数据的方式(例如,来自 Excel)。
如果您碰巧有 Excel 数据,您可以使用 tidyverse
中的 read_excel
并可以包含 .name_repair = "minimal"
以防止更改列名。
在这种情况下,使用 repair_names
可以使重复的列名具有一致的结构,也许带有下划线(这会给你 Name
、Name_1
、Name_2
、Age
、Age_1
、Age_2
等)。
最后,您重复的 pivot_longer
列将提供一个整洁的数据框。
此外,还有许多替代方法可以修复重复的列名并使其独一无二;例如,make.unique
从 janitor
包调用了 names(df)
或 clean_names(df)
。
library(tidyverse)
library(readxl)
df <- read_excel("raw_data.xlsx", .name_repair = "minimal")
df %>%
repair_names(sep = "_") %>%
pivot_longer(-c(Family, Location), names_to = c(".value", "variable"), names_sep = "_") %>%
select(-variable)
我必须将一个非正统文件导入 R。我附上了一个带有虚假数据的小示例文件来演示该问题。我需要整理的原始数据显示在图像“原始”中,我要创建的整理数据显示在图像“整洁”中。
RAW
整洁
每个人都有 (1) 适用于同一组内所有个人的组级别信息,以及 (2) 仅适用于各自个人的个人级别信息。在附件中,组级数据包括Family和Location。然后,根据组中有多少人,有与每个人相关的重复列集。
例如,第 2 行代表居住在芝加哥的史密斯一家。史密斯家族有 3 名成员,包括约翰、莎莉和本。每个成员都有自己的一组具有相同信息类型的重复列名称:姓名、年龄、性别, 爱好。这些列中的每一组都具有相同的名称,并且每个家庭最多重复 3 个人(总共 9 列)。
我需要的是将这些数据导入 R 并将其转换为整洁的格式,最好使用 tidyverse 解决方案。
感谢您的帮助!
也许最好的策略还取决于您输入原始数据的方式(例如,来自 Excel)。
如果您碰巧有 Excel 数据,您可以使用 tidyverse
中的 read_excel
并可以包含 .name_repair = "minimal"
以防止更改列名。
在这种情况下,使用 repair_names
可以使重复的列名具有一致的结构,也许带有下划线(这会给你 Name
、Name_1
、Name_2
、Age
、Age_1
、Age_2
等)。
最后,您重复的 pivot_longer
列将提供一个整洁的数据框。
此外,还有许多替代方法可以修复重复的列名并使其独一无二;例如,make.unique
从 janitor
包调用了 names(df)
或 clean_names(df)
。
library(tidyverse)
library(readxl)
df <- read_excel("raw_data.xlsx", .name_repair = "minimal")
df %>%
repair_names(sep = "_") %>%
pivot_longer(-c(Family, Location), names_to = c(".value", "variable"), names_sep = "_") %>%
select(-variable)