我的确凿数据如下:
FirmName PreviousNames Location
Firm1 Firm1_old X
Firm2 Firm2_old Y
NA Firm2_old2 NA
Firm3 NA Z
如您所见,对于某些公司,某些列具有不同的组件,尽管并非全部。发生这种情况时,公司将占用多行,在此示例中就是Firm2的情况。但是,公司ID不会重复。
我想转换数据,使其看起来像这样:
FirmName PreviousNames Location
Firm1 Firm1_old X
Firm2 c(Firm2_old,Firm2_old2) Y
Firm3 NA Z
也就是说,我需要:
1)将与同一公司相关的行折叠为单行:公司的初始行以及第一列中没有公司ID的所有后续行
2)为带有某些公司多个输入的那些列创建向量或列表。
我认为向量大小可能是个问题:也就是说,给定列中的所有单元格都需要相同的向量大小。因此,最终结果可能实际上需要如下所示:
FirmName PreviousNames Location
Firm1 c(Firm1_old,NA) X
Firm2 c(Firm2_old,Firm2_old2) Y
Firm3 c(NA,NA) Z
我很好,尽管我更希望消除无用的NA。不过不是优先事项。
无论如何。我可以使用R基本函数或dplyr / tidyr来实现,以最佳方式为准。请注意,我并不是完全希望将这些数据从长格式转换为宽格式。
我也考虑过使用lapply
,但不确定如何编写函数。