使用变量名称中的年份从宽到长重塑

时间:2018-04-30 14:48:11

标签: r panel reshape

我正在尝试从宽到长重塑大型数据帧(34645 x 11619)。我想重塑99到16年。这意味着我有变量,如“edu 99 ”,“edu 00 ”,......“edu 16 “或变量如”p99d 61 “,”p 00 d61“,......,”p 16 d61 ”。年份字符串并不总是在同一位置。

有没有办法告诉R在重塑时在变量名中查找年份字符串“99-16”? (当然,鉴于字符串编号唯一标识年份)。

或者一般来说,是否有重塑大数据集的有效策略?

非常感谢你的帮助!

最好,帕特里克

1 个答案:

答案 0 :(得分:0)

我会使用 tidyr 代替重塑

    使用gather()函数
  1. 从长到长:https://tidyr.tidyverse.org/reference/gather.html
  2. 使用extract()函数提取年份:https://tidyr.tidyverse.org/reference/extract.html
  3. 您可以在步骤2中使用此正则表达式来提取年份"(99|0[0-9]|1[1-9])"。它选择任何数字对,等于99,介于00和09之间,或介于10和19之间。

    extract(<long_data_name>, <column_name>, <string_name_of_result_column>, regex = "(99|0[0-9]|1[1-9])", remove = TRUE)