R 如何更改数据的组织方式?

R 如何更改数据的组织方式?,r,tidyr,reorganize,R,Tidyr,Reorganize,我的数据目前组织在中(实际数据见下表1)。我只显示了整个数据的一部分,因为整个图像相当大(超过100行) 我想改变它的组织方式,以便它显示以下内容。我想强调的是,它将显示所有城市,而不仅仅是我选择列出的城市。这是一个不完整的图表,但它让人明白了这一点: +-------------+------------------+--------+----------+ | Chino Hills | Huntington Beach | Irvine | Glendale | +------------

我的数据目前组织在中(实际数据见下表1)。我只显示了整个数据的一部分,因为整个图像相当大(超过100行)

我想改变它的组织方式,以便它显示以下内容。我想强调的是,它将显示所有城市,而不仅仅是我选择列出的城市。这是一个不完整的图表,但它让人明白了这一点:

+-------------+------------------+--------+----------+
| 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)