在收集函数中使用变量

时间:2018-03-08 16:32:50

标签: r database tidyr

我使用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文件夹的数据集列表(现在只有一个)。有人知道答案或解决方法吗?

2 个答案:

答案 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)

我仍然不知道为什么聚会不能将变量用作名字......