我使用R将数据表格式转换为长格式。它可以工作,除了必须为新列使用变量:
library(readr)
library(tidyr)
files <- Sys.glob("sources/*.csv") #data is from http://api.worldbank.org/v2/en/indicator/NY.GDP.MKTP.CD?downloadformat=csv , the worldbank data for current GDP
data_wide <- read_csv(files, skip = 4)
ind <- as.character(data_wide[1,3])
data_wide <- data_wide[, !(colnames(data_wide) %in% c("X63", "Indicator Code", "Indicator Name"))]
data <- gather(data_wide, "year", value = ind, "1960":"2017")
所以ind是一个带有指标名称的变量。在最终的数据表数据中,value列被称为ind而不是变量ind的值。我需要它变量,因为我最终想要将此代码作为公式应用于来自sources文件夹的数据集列表(现在只有一个)。有人知道答案或解决方法吗?
答案 0 :(得分:1)
使用!!as.character(ind)
:
data <- gather(data_wide, "year", value = !!as.character(ind), "1960":"2017")
答案 1 :(得分:0)
抱歉这个坏问题,我希望现在更容易理解。另外,我使用&#34; melt&#34;解决了这个问题。形成&#34; reshape2&#34;包而不是聚集:
data <- melt(data_wide, id.vars = c("Country Name", "Country Code"), variable.name = "year", value.name=ind)
我仍然不知道为什么聚会不能将变量用作名字......