我希望我能解释清楚。我有一个 3 个月的每日 timeseries
数据集,其中每个 ID
都有多个
属性值。每个属性下的值存储在不同的列中。
示例数据
ID Date Var1 Var2
279557 1/1/2020 1 2
279557 1/2/2020 3 4
280485 1/1/2020 5 6
288785 1/2/2020 7 8
目的是聚合每个月
每个Var
下的ID
值,然后绘制timeseries
每个 Var
下每个聚合 ID
的线图。
我首先想到做一个pivot long
library(dplyr)
library(tidyverse)
ID = c("297557", "279557", "280485", "280485")
Date = c("1/1/2020", "1/2/2020", "1/1/2020", "1/2/2020")
Var1 = c("1", "3", "5", "7")
Var2 = c("2", "4", "6", "8")
df = data.frame(ID, Date, Var1, Var2)
df= df%>%
pivot_longer(-c(ID, Date))
输出
ID Date Value
279557 1/1/2020 1
279557 1/1/2020 2
279557 1/2/2020 3
279557 1/1/2020 4
280485 1/1/2020 5
280485 1/1/2020 6
280485 1/2/2020 7
280485 1/2/2020 8
现在,为了对每个 ID
下的每个 Var
值进行分组(对于 ggplot2),我正在考虑创建另一个名为的唯一 ID
列像素
。唯一的 ID
应该是这样的,例如,对于 297557
的 Var1
的前两个值,我可以拥有一个唯一的 ID,例如 ID1.Var1
在像素列下。
Pixel ID Date Value
ID1.Var1 279557 1/1/2020 1
ID1.Var2 279557 1/1/2020 2
ID1.Var1 279557 1/1/2020 3
ID1.Var2 279557 1/2/2020 4
ID2.Var1 280485 1/1/2020 5
ID2.Var2 280485 1/1/2020 6
ID2.Var1 280485 1/2/2020 7
ID2.Var2 280485 1/2/2020 8
现在我可以使用ggplot
ggplot(data = df, aes(x= Date, y=Value, group = Pixel)) +
geom_line() +
xlab("")
如何自动
创建唯一的Pixel
列,而无需在R中的
使用Pixel
列下手动键入每个唯一ID dplyr
?
最佳答案
你可以试试
df %>%
pivot_longer(-c(ID, Date)) %>%
rowwise %>%
mutate(Pixel = paste0(c("ID",as.integer(as.factor(ID)),".",name), collapse = "")) %>% select(-name)
ID Date value Pixel
<chr> <chr> <chr> <chr>
1 279557 1/1/2020 1 ID1.Var1
2 279557 1/1/2020 2 ID1.Var2
3 279557 1/2/2020 3 ID1.Var1
4 279557 1/2/2020 4 ID1.Var2
5 280485 1/1/2020 5 ID1.Var1
6 280485 1/1/2020 6 ID1.Var2
7 280485 1/2/2020 7 ID1.Var1
8 280485 1/2/2020 8 ID1.Var2
更新
df %>%
pivot_longer(-c(ID, Date)) %>%
rowwise %>%
mutate(Pixel = paste0(c(ID,".",name), collapse = "")) %>% select(-name)
ID Date value Pixel
<chr> <chr> <chr> <chr>
1 279557 1/1/2020 1 279557.Var1
2 279557 1/1/2020 2 279557.Var2
3 279557 1/2/2020 3 279557.Var1
4 279557 1/2/2020 4 279557.Var2
5 280485 1/1/2020 5 280485.Var1
6 280485 1/1/2020 6 280485.Var2
7 280485 1/2/2020 7 280485.Var1
8 280485 1/2/2020 8 280485.Var2
关于r - 在 R 中创建唯一 ID 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69936310/