R 重命名时将轴转得更宽
我有一张这样的桌子R 重命名时将轴转得更宽,r,tidyr,R,Tidyr,我有一张这样的桌子 id name value 1 PROD_N NA 2 PROD_N_NATIONAL 0.789 3 PROD_N1 0.5 4 PROD_N1_NATIONAL 0.2 5 PROD_N2 0.4 6 PROD_N2_NATIONAL 0.3 7 PROD_N3 NA 8 PROD_N3_NATIONAL 0.2
id name value
1 PROD_N NA
2 PROD_N_NATIONAL 0.789
3 PROD_N1 0.5
4 PROD_N1_NATIONAL 0.2
5 PROD_N2 0.4
6 PROD_N2_NATIONAL 0.3
7 PROD_N3 NA
8 PROD_N3_NATIONAL 0.221
9 PROD_N4 0.2
10 PROD_N4_NATIONAL 0.391
我需要像这样的东西(为了使gg图分组填充栏)
我几乎可以肯定我应该更广泛地使用pivot_,但我无法做到这一点。我总是以
id prod_n prod_n_national prod_n1 prod_n1_national ...
另外,这是另一个问题,但即使使用所需的表,我也不确定如何在同一个图中绘制两个“y”值。但我会看看我什么时候到
谢谢你的提示 在将表格转换为宽格式之前,我看到了两个可能需要处理的步骤
名称
列中的数字创建年份
列名称
列中的数字df %>%
mutate(year = 2020 - replace_na(as.numeric(str_extract(name, "\\d")), 0),
name = str_remove(name, "\\d")) %>%
pivot_wider(id_cols = year,
names_from = name,
values_from = value) %>%
mutate(ID = row_number())
# A tibble: 5 x 4
year PROD_N PROD_N_NATIONAL ID
<dbl> <dbl> <dbl> <int>
1 2020 NA 0.789 1
2 2019 0.5 0.2 2
3 2018 0.4 0.3 3
4 2017 NA 0.221 4
5 2016 0.2 0.39 5
如果您想要相同的geom_x
但名称颜色不同,则可能需要长格式:
df %>%
mutate(year = 2020 - replace_na(as.numeric(str_extract(name, "\\d")), 0),
name = str_remove(name, "\\d")) %>%
ggplot() +
geom_line(aes(y = value, x = year, color = name))
我看到在将表转换为宽格式之前可能需要处理两个步骤
名称
列中的数字创建年份
列名称
列中的数字df %>%
mutate(year = 2020 - replace_na(as.numeric(str_extract(name, "\\d")), 0),
name = str_remove(name, "\\d")) %>%
pivot_wider(id_cols = year,
names_from = name,
values_from = value) %>%
mutate(ID = row_number())
# A tibble: 5 x 4
year PROD_N PROD_N_NATIONAL ID
<dbl> <dbl> <dbl> <int>
1 2020 NA 0.789 1
2 2019 0.5 0.2 2
3 2018 0.4 0.3 3
4 2017 NA 0.221 4
5 2016 0.2 0.39 5
如果您想要相同的geom_x
但名称颜色不同,则可能需要长格式:
df %>%
mutate(year = 2020 - replace_na(as.numeric(str_extract(name, "\\d")), 0),
name = str_remove(name, "\\d")) %>%
ggplot() +
geom_line(aes(y = value, x = year, color = name))
谢谢,我刚试过,但很奇怪,我的“prod_N”和“prod_N_national”现在都列在名单上了。你知道为什么吗?嘿,为了记录在案,由于这个链接,我知道如何从pivot到WideThank“取消”列表。谢谢,我刚刚尝试过,但很奇怪,我的“prod_N”和“prod_N_national”现在是一个列表。你知道为什么吗?嘿,只是为了记录在案,多亏了这个链接,我明白了如何从轴到宽“取消”列表
df %>%
mutate(year = 2020 - replace_na(as.numeric(str_extract(name, "\\d")), 0),
name = str_remove(name, "\\d")) %>%
ggplot() +
geom_line(aes(y = value, x = year, color = name))