【问题标题】:Pivot Longer charter headings枢轴更长的包机标题
【发布时间】:2021-08-10 15:30:30
【问题描述】:

我有具有以下列名称的数据集

[1] "OdName" "AreaName" "RegName" "DevName" "1980" "1981"
[7] "1982" "1983" "1984" "1985" "1986" "1987"
[13] "1988" "1989" "1990" "1991" "1992" "1993"
[19] "1994" "1995" "1996" "1997" "1998" "1999"
[25] "2000" "2001" "2002" "2003" "2004" "2005"
[31] "2006" "2007" "2008" "2009" "2010" "2011"
[37] "2012" "2013"

从我需要将所有年份列旋转到一个“年份”列的角度来看,有一个旋转时间更长的问题。如果列标题带有数字会很容易。

pivot_longer(
cols =c(1980:2013),
names_to = "Years",
values_to = "Count")

所以有点迷失在如何旋转一系列章程列标题。 我需要相当于 1980:2013 的字符

【问题讨论】:

  • 查找as.character

标签: r pivot-table tidyr


【解决方案1】:

“相当于 1980:2013 的字符” 字面意思是 as.character(1980:2013)。没有它会失败的原因是pivot_longer 将尝试对列号(即第 1980 列)进行索引。

dat <- data.frame(OdName='a', AreaName='b', RegName='c', DevName='d', "1980"=1, "1981"=2, "1982"=3, check.names = FALSE)
tidyr::pivot_longer(dat, 1980:1982, names_to = "Years", values_to = "Count")
# Error: Can't subset columns that don't exist.
# x Locations 1980, 1981, and 1982 don't exist.
# i There are only 7 columns.

关键是 Locations(稍微少一点——所以“只有 7 列”)。如果它正在寻找 names 1980 等,那么它会出错:

# x Column `1980` doesn't exist.

(当然有)

改为使用as.character:

tidyr::pivot_longer(dat, as.character(1980:1982), names_to = "Years", values_to = "Count")
# # A tibble: 3 x 6
#   OdName AreaName RegName DevName Years Count
#   <chr>  <chr>    <chr>   <chr>   <chr> <dbl>
# 1 a      b        c       d       1980      1
# 2 a      b        c       d       1981      2
# 3 a      b        c       d       1982      3

【讨论】:

  • 谢谢先生。级长
  • 你也可以反引号pivot_longer(dat, 1980:1982, names_to = 'Years', values_to = 'Count')
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-07
  • 1970-01-01
  • 1970-01-01
  • 2016-12-14
相关资源
最近更新 更多