我如何旋转或转置 R 中 table 中的特定列?

How do i pivot or transpose specific columns in a table in R?

我有一个看起来像这样的收入数据集。

CITY 2014 2015
AA 21 22
BB 21 24

我正在尝试找到一种使数据集看起来像这样的方法。

CITY Income Year
AA 21 2014
AA 21 2014
BB 22 2015
BB 24 2015

我尝试使用 tidyr 包来解决这个问题,但到目前为止我还没有成功。是否有任何其他包或代码可以进行此转换?

谢谢!

你想要pivot_longer。请记住,R 不喜欢将数字作为列名。

df <- tibble(city=c("AA","BB"), `2014`=c(21,21), `2015`=c(22, 24))
df %>% pivot_longer(c(`2014`, `2015`), names_to="Year", values_to="Income")
# A tibble: 4 x 3
  city  Year  Income
  <chr> <chr>  <dbl>
1 AA    2014      21
2 AA    2015      22
3 BB    2014      21
4 BB    2015      24

欢迎来到 Stack Overflow Daya!以后请努力post一个reproducible example。这些有助于受访者更好地理解和诊断您的问题。

使用tidyr包中的pivot_longer()功能即可实现。下面是一个可重现的例子:

library(tidyr)
city<-c("AA", "BB")
y14<-c(21, 21)
y15<-c(22,24)

DF<-data.frame(city, y14, y15)
colnames(DF)<-c("CITY",2014, 2015)

DF %>% pivot_longer(cols= c(2:3), names_to="Year", values_to="Income")