我有一个包含大约430个变量(列)的宽数据框。每列代表35年期间的日历月。
数据的简化摘录如下:
ID a890 a891 a892 a893 a894 a895 a896 a897 a898 a899 a900 a901
1 0 0 0 1 1 1 1 1 1 1 1 1
2 NA NA NA NA 1 1 1 1 1 1 1 1
3 0 0 NA 1 1 1 1 1 1 1 1 1
问题第1部分:
我想转换数据,以便每年只进行一次测量。
一种解决方案是选择每12条记录,这可以手动完成(11号后每12个记录),就像我们一样。
hist.year <- hist[,c("a900","a912","a924","a936","a948","a960","a972","a984","a996","a1008","a1020","a1032","a1044","a1056","a1068","a1080","a1092","a1104","a1116","a1128","a1140","a1152","a1164","a1176","a1188","a1200","a1212","a1224","a1236","a1248","a1260","a1272","a1284")]
然后我们需要重新命名age16,age17等列。拥有更多简约且不易出错的代码,或许使用序列,已经是一种改进。
问题第2部分:
此外,还有一定数量的缺失数据(NA),我希望将其最小化。因为事件的精确时间在我们正在进行的分析类型中并不是特别重要,所以我希望能够从每个第12条记录的任何一侧获取记录,如果它是NA而它们不是。例如,如果缺少12号,24号等记录,则将age16,age17等替换为第11,23等记录的内容,如果它们没有丢失的话。如果缺少以上所有内容,请尝试第13,25等记录....我想最后得到一个数据帧,而不是在控制台中查看输出。
有人知道怎么做吗?请注意,我是R的初学者,更习惯Stata软件,所以你真的需要引导我。
我可以看到有几个相关的问题(Deleting every n-th row in a dataframe,Splitting a dataframe every other column to create two separate files),但看不出如何根据我的情况调整它们。
非常感谢。