R 如何更改数据的组织方式?
我的数据目前组织在中(实际数据见下表1)。我只显示了整个数据的一部分,因为整个图像相当大(超过100行) 我想改变它的组织方式,以便它显示以下内容。我想强调的是,它将显示所有城市,而不仅仅是我选择列出的城市。这是一个不完整的图表,但它让人明白了这一点:R 如何更改数据的组织方式?,r,tidyr,reorganize,R,Tidyr,Reorganize,我的数据目前组织在中(实际数据见下表1)。我只显示了整个数据的一部分,因为整个图像相当大(超过100行) 我想改变它的组织方式,以便它显示以下内容。我想强调的是,它将显示所有城市,而不仅仅是我选择列出的城市。这是一个不完整的图表,但它让人明白了这一点: +-------------+------------------+--------+----------+ | Chino Hills | Huntington Beach | Irvine | Glendale | +------------
+-------------+------------------+--------+----------+
| Chino Hills | Huntington Beach | Irvine | Glendale |
+-------------+------------------+--------+----------+
| Row 1 | Row 1 | Row 2 | Row 3 |
| Row 2 | | | Row 5 |
| | | | Row 5 |
+-------------+------------------+--------+----------+
我已经尝试了tidyr::separate_rows(dfl,col)
,但这仅在城市位于一个单元格中时有效;但是,它们位于多行的多个单元格中。这就是我尝试使用tidyr::separate_rows(dfl,col)
时发生的情况:
Row九月十月十二月一月二月三月四月五月六月七月
1 1奇诺山亨廷顿Bea~喷泉谷阿纳海姆喷泉谷~阿卡迪亚阿纳海姆纽波特Be~圣安娜纳纳
2欧文塞里托斯长滩奇诺山塞里托斯阿纳海姆纳班宁新港海滩阿纳海姆纳
3.3格伦代尔-西科维纳-蒙特利公园-恩西诺-蒙特利-宾夕法尼亚州-洛杉矶塞里托斯-贝弗利Hi~
4 4诺科喷泉谷蒙特利公园长滩圣安娜亨廷顿海滩喷泉瓦尔
5 5洛杉矶英格伍德西科维纳格伦代尔纳格伦代尔纳格拉纳达Hi~奇诺西科维纳泰山
正如您所看到的,它所做的唯一事情就是添加另一行我不需要的数字
总之,我需要程序R来找到所有的城市,并告诉我它们在哪一排。如果城市多次出现在该行中,则该行可能出现多次。它将组织多个列,而不仅仅是tidyr中使用的标准列。列的数量将取决于不同城市的数量。我们可以获取长格式的数据,为每一行和值保留唯一的值,并获取宽格式的数据。假设
df
是数据帧名称
library(dplyr)
library(tidyr)
df %>%
pivot_longer(cols = -Row, values_drop_na = TRUE) %>%
distinct(Row, value) %>%
group_by(value) %>%
mutate(row = row_number()) %>%
pivot_wider(names_from = value, values_from = Row)
尝试
melt
从restrape
中选择melt
如果您包含一个简单的示例输入和所需的输出,可用于测试和验证可能的解决方案,则会更容易为您提供帮助。(数据的图像没有帮助,因为我们无法复制/粘贴数据)。我用当前使用的数据(不是图像形式)编辑了原始帖子。我还添加了一个使用separate_rows函数的示例。我能提供更多有用的数据吗?我不知道melt
来自reformate
的意思是什么。
Row September October November December January February March April May June July
<chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
1 1 Chino Hills Huntington Bea~ Fountain Valley Anaheim Fountain Vall~ Arcadia Anaheim Newport Be~ Santa Ana NA NA
2 2 Irvine Cerritos Long Beach Chino Hills Cerritos Anaheim NA Banning Newport Beach Anaheim NA
3 3 Glendale NA West Covina Monterey Park Encino NA Monterey Pa~ NA Los Angeles Cerritos Beverly Hi~
4 4 Norco Fountain Valley NA Monterey Park NA Long Beach NA Santa Ana Huntington Be~ Fountain Val~ NA
5 5 Los Angeles Inglewood West Covina Glendale NA Glendale NA Granada Hi~ Chino West Covina Tarzana
library(dplyr)
library(tidyr)
df %>%
pivot_longer(cols = -Row, values_drop_na = TRUE) %>%
distinct(Row, value) %>%
group_by(value) %>%
mutate(row = row_number()) %>%
pivot_wider(names_from = value, values_from = Row)