首页 > 解决方案 > R中的列表数组-将它们转换为Origin

问题描述

在 R 中,我有一个名为“test [[]]”的列表数组,其中列表显示如下数据:

X44231 X44232 X44233 X44234 X44235 X44236 X44237 X44238
1     100      0      0      0      0      0      0      0
2       0      0      0      0      0      0      0      0
3       0      0      0      0      0      0      0      0
4     100      0      0      0      0      0    200      0
5       0      0      0      0      0      0      0      0
6     700    900      0      0   1100   1200   1200   1200
7       0      0      0      0      0      0      0      0
8       0      0      0      0      0      0      0      0
9       0      0      0      0      0      0      0      0
10      0      0      0      0      0      0      0      0
11      0      0      0      0      0      0      0      0
12      0      0      0      0      0      0      0      0
13      0      0      0      0      0      0      0      0
14      0      0      0      0      0      0      0      0
15      0      0      0      0      0      0      0      0

有些列以 X 和一个数字命名,我需要将它们转换为 origin = "1899-12-30",但我不知道如何将此规则应用于列标题并且仍然将 X 从方式(注意:不是我必须应用此转换的所有列)

转换示例:

as.Date(44228, origin = "1899-12-30")

标签: rarrayslist

解决方案


我希望这就是你要找的

library(tidyverse)

read.table(text = "X44231 X44232 X44233 X44234 X44235 X44236 X44237 X44238
1     100      0      0      0      0      0      0      0
2       0      0      0      0      0      0      0      0
3       0      0      0      0      0      0      0      0
4     100      0      0      0      0      0    200      0
5       0      0      0      0      0      0      0      0
6     700    900      0      0   1100   1200   1200   1200
7       0      0      0      0      0      0      0      0
8       0      0      0      0      0      0      0      0
9       0      0      0      0      0      0      0      0
10      0      0      0      0      0      0      0      0
11      0      0      0      0      0      0      0      0
12      0      0      0      0      0      0      0      0
13      0      0      0      0      0      0      0      0
14      0      0      0      0      0      0      0      0
15      0      0      0      0      0      0      0      0", header = T) ->df
   
names(df) %>% 
   str_remove("X") %>% 
   as.numeric() %>% 
   as.Date(origin = "1899-12-30") -> c_names

names(df) <- c_names
df
#>    2021-02-04 2021-02-05 2021-02-06 2021-02-07 2021-02-08 2021-02-09 2021-02-10
#> 1         100          0          0          0          0          0          0
#> 2           0          0          0          0          0          0          0
#> 3           0          0          0          0          0          0          0
#> 4         100          0          0          0          0          0        200
#> 5           0          0          0          0          0          0          0
#> 6         700        900          0          0       1100       1200       1200
#> 7           0          0          0          0          0          0          0
#> 8           0          0          0          0          0          0          0
#> 9           0          0          0          0          0          0          0
#> 10          0          0          0          0          0          0          0
#> 11          0          0          0          0          0          0          0
#> 12          0          0          0          0          0          0          0
#> 13          0          0          0          0          0          0          0
#> 14          0          0          0          0          0          0          0
#> 15          0          0          0          0          0          0          0
#>    2021-02-11
#> 1           0
#> 2           0
#> 3           0
#> 4           0
#> 5           0
#> 6        1200
#> 7           0
#> 8           0
#> 9           0
#> 10          0
#> 11          0
#> 12          0
#> 13          0
#> 14          0
#> 15          0

reprex 包于 2021-02-05 创建(v0.3.0)


推荐阅读