问题:
我如何获取一个包含成对数据(但列名不同)的 Dataframe 并有效地合并它?(解决方案不需要是tidyverse
)。
启动数据框:
我在一个数据框架中有源/目标对信息,像这样...
library(tidyverse)
df <- tibble(orig_city = c("Philadelphia", "Orlando", "Los Angeles"),
orig_state = c("PA", "FL", "CA"),
orig_zip = c("21948", "48321", "98765"),
dest_city = c("Boston", "St Louis", "Houston"),
dest_state = c("MA", "MO", "TX"),
dest_zip = c("12345", "67890", "45678"))
> df
# A tibble: 3 × 6
orig_city orig_state orig_zip dest_city dest_state dest_zip
<chr> <chr> <chr> <chr> <chr> <chr>
1 Philadelphia PA 21948 Boston MA 12345
2 Orlando FL 48321 St Louis MO 67890
3 Los Angeles CA 98765 Houston TX 45678
...我需要获取每个城市的地理位置数据,但这些信息并不取决于它是起点还是目的地,所以我想将其堆叠起来,并在一组列中进行处理。这里有一个方法可以用正确的输出来解决我的问题:
所需数据框
df_stacked1 <- tibble(city = c(df$orig_city, df$dest_city),
state = c(df$orig_state, df$dest_state),
zip = c(df$orig_zip, df$dest_zip))
> df_stacked1
# A tibble: 6 × 3
city state zip
<chr> <chr> <chr>
1 Philadelphia PA 21948
2 Orlando FL 48321
3 Los Angeles CA 98765
4 Boston MA 12345
5 St Louis MO 67890
6 Houston TX 45678
虽然这是可行的,但它并没有很好地缩放,如果我说... 15对而不是3对。
我有另一个使用rbind()
的解决方案,但这需要名称匹配,虽然它可以更好地扩展,我想知道是否有更好的方法,我还没有找到。
备用工作液
df_orig <- df[, 1:3]
colnames(df_orig) <- gsub("orig_", "", colnames(df_orig))
df_dest <- df[, 4:6]
colnames(df_dest) <- gsub("dest_", "", colnames(df_dest))
df_stacked2 <- rbind(df_orig, df_dest)
> df_stacked2
# A tibble: 6 × 3
city state zip
<chr> <chr> <chr>
1 Philadelphia PA 21948
2 Orlando FL 48321
3 Los Angeles CA 98765
4 Boston MA 12345
5 St Louis MO 67890
6 Houston TX 45678
提前感谢您的任何建议。
1条答案
按热度按时间t8e9dugd1#
字符串