r - 枢轴更长的包机标题
问题描述
我有具有以下列名称的数据集
[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"
从我需要将所有年份列旋转到一列“Years”的角度来看,有一个旋转更长的问题。如果列标题带有数字,那将很容易。
pivot_longer(
cols =c(1980:2013),
names_to = "Years",
values_to = "Count")
所以有点迷失了如何旋转一系列宪章专栏标题。我需要相当于 1980:2013 的字符
解决方案
“相当于 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.
关键是位置(稍微少一点——“只有 7 列”)。如果它正在寻找名称 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
推荐阅读
- variables - 是否可以使用 Microsoft Flow 将文件发布到共享点一个因用户名而异的文件夹?
- scala - Scala中的简单函数组合
- google-api - 使用 Google ID 查找用户的 YouTube 帐户
- ios - Xamarin - iOS - 查找自动锁定屏幕时间
- angular - TypeScript 管道/地图错误 - TS2322 Type Observable<{} | User> 不可分配给 Observable
- jquery - 如何使用 Node 从两个 MongoDB 集合中删除
- c++ - 全局功能识别失败
- python - 在 ubunto 16.04 中将版本 3.5 更新到 3.6 后在 python 中读取数据时出错
- android - 在 Android Studio 中隐藏活动工具窗口的快捷方式是什么?
- powershell - 跳转到 foreach 中的 IP 列表