r - 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")
解决方案
我希望这就是你要找的
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)