为每个单独的R

问题描述

我必须将一个非传统的文件导入R。我已经附加了一个带有伪造数据的小示例文件来演示该问题。我需要处理的原始数据显示在图像“原始”中,而我要创建的整理数据显示在图像“整理”中。

原始

enter image description here

泰迪

enter image description here

每个人都有(1)适用于同一组中所有个人的组级别信息,以及(2)仅适用于相应人的个人级别信息。在附件中,组级别数据包括家庭位置。然后,根据组中有多少人,重复列出与每个人相关的列集。

例如,第2行代表居住在芝加哥的Smith一家。 Smith家族有3位成员,包括John,Sally和Ben。每个成员都有自己的重复列名称集,这些列名称具有相同的信息类型:名称年龄性别兴趣爱好。这些列的每组名称都相同,每个家庭最多重复3个人(总共9列)。

我需要的是将这些数据导入R并将其转换为整齐的格式,最好使用tidyverse解决方案。

感谢您的帮助!

解决方法

也许最好的策略可能还取决于您输入原始数据的方式(例如,从Excel中输入)。

如果碰巧具有Excel数据,则可以使用read_excel中的tidyverse并可以包含.name_repair = "minimal"来防止列名更改。

在这种情况下,使用repair_names可以使重复的列名称具有一致的结构,也许带有下划线(这将为您提供NameName_1,{{1 }},Name_2AgeAge_1等)。

最后,您重复的列中的Age_2将提供整洁的数据帧。

此外,还有许多其他方法可以修复重复的列名并使之唯一;例如,pivot_longermake.unique包中调用了names(df)clean_names(df)

janitor