如何使用 tidyr::spread 值参数并将其值存储为字符串变量?
How to use the tidyr::spread value parameter with its value stored as a string variable?
我在一个循环中 运行 几个 tidyr::spread
,其中 value
参数的值发生变化。但是,value
需要 "the bare (unquoted) name"...
mydata <- structure(list(ID = c(26242055, 26242254, 26243093, 26248278,
26252563, 26255141, 26242055), Target = c(0, 0, 0, 0, 0, 0, 0
), opendt = c("2013-01-31", "2013-01-31", "2013-01-31", "2013-01-31",
"2013-01-31", "2013-01-31", "2013-01-31"), txn_bc_am_cnt = c(1,
2, 1, 27, 1, 2, 1), txn_bc_am_sum = c(200000, 19040.02, 35000,
143227.5, 11910, 32212.8, 200000), delta = c(1, 1, 2, 2, 2, 3,
3)), .Names = c("ID", "Target", "opendt", "txn_bc_am_cnt", "txn_bc_am_sum",
"delta"), row.names = c(NA, 7L), class = "data.frame")
x <- c("txn_bc_am_sum", "txn_bc_am_cnt")
所以这有效:
tidyr::spread(mydata[,c("ID", "Target", "opendt", x[1], "delta")],
key = delta, value = txn_bc_am_sum)
但这失败了:
tidyr::spread(mydata[,c("ID", "Target", "opendt", x[1], "delta")],
key = delta, value = x[1])
我怎样才能让它与更改 value
一起工作?我确定有一个优雅的解决方法,但我想不通。
tidyr 函数似乎不支持新的 rlang 语法,所以现在最好的办法是使用函数的 ?spread_
标准评估版本
tidyr::spread_(mydata[,c("ID", "Target", "opendt", x[1], "delta")],
key_col = "delta", value_col = x[1])
我在一个循环中 运行 几个 tidyr::spread
,其中 value
参数的值发生变化。但是,value
需要 "the bare (unquoted) name"...
mydata <- structure(list(ID = c(26242055, 26242254, 26243093, 26248278,
26252563, 26255141, 26242055), Target = c(0, 0, 0, 0, 0, 0, 0
), opendt = c("2013-01-31", "2013-01-31", "2013-01-31", "2013-01-31",
"2013-01-31", "2013-01-31", "2013-01-31"), txn_bc_am_cnt = c(1,
2, 1, 27, 1, 2, 1), txn_bc_am_sum = c(200000, 19040.02, 35000,
143227.5, 11910, 32212.8, 200000), delta = c(1, 1, 2, 2, 2, 3,
3)), .Names = c("ID", "Target", "opendt", "txn_bc_am_cnt", "txn_bc_am_sum",
"delta"), row.names = c(NA, 7L), class = "data.frame")
x <- c("txn_bc_am_sum", "txn_bc_am_cnt")
所以这有效:
tidyr::spread(mydata[,c("ID", "Target", "opendt", x[1], "delta")],
key = delta, value = txn_bc_am_sum)
但这失败了:
tidyr::spread(mydata[,c("ID", "Target", "opendt", x[1], "delta")],
key = delta, value = x[1])
我怎样才能让它与更改 value
一起工作?我确定有一个优雅的解决方法,但我想不通。
tidyr 函数似乎不支持新的 rlang 语法,所以现在最好的办法是使用函数的 ?spread_
标准评估版本
tidyr::spread_(mydata[,c("ID", "Target", "opendt", x[1], "delta")],
key_col = "delta", value_col = x[1])