我想将列绑定到数据框,并使用从字符串
动态分配的列名称y_attribute = "Survived"
cbind(test_data, y_attribute = NA)
这会导致新列添加为y_attribute
而不是必需的Survived
属性,该属性作为y_attribute变量的字符串提供。需要做什么才能使用变量提供的列名来获取数据框中的列?
答案 0 :(得分:5)
您实际上并不需要import org.apache.spark.sql.functions._
val df = Seq(
(1, 3, 0, 9, "a", "b", "c")
).toDF("col1", "col2", "col3", "col4", "col5", "col6", "Col7")
val cols = Seq("col1", "col2", "col3", "col4")
val rowMax = greatest(
cols map col: _*
).alias("max")
val rowMin = least(
cols map col: _*
).alias("min")
df.select($"*", rowMin, rowMax).show
// +----+----+----+----+----+----+----+---+---+
// |col1|col2|col3|col4|col5|col6|Col7|min|max|
// +----+----+----+----+----+----+----+---+---+
// | 1| 3| 0| 9| a| b| c|0.0|9.0|
// +----+----+----+----+----+----+----+---+---+
来添加新列。其中任何一个都可行:
cbind
在现有列之后添加新列,就像test_data[, y_attribute] = NA # data frame row,column syntax
test_data[y_attribute] = NA # list syntax (would work for multiple columns at once)
test_data[[y_attribute]] = NA # list single item syntax (single column only)
。
答案 1 :(得分:3)
我们可以使用tidyverse
来执行此操作
library(dplyr)
test_data %>%
mutate(!! y_attribute := NA)
# col1 Survived
#1 1 NA
#2 2 NA
#3 3 NA
#4 4 NA
#5 5 NA
test_data <- data.frame(col1 = 1:5)
答案 2 :(得分:0)
对此不感到骄傲,但我通常会做这样的事情:
dyn.col <- "XYZ"
cbind(test.data, UNIQUE_NAMEXXX=NA)
colnames(test.data)[colnames(test.data == 'UNIQUE_NAMEXXX')] <- dyn.col
答案 3 :(得分:0)
我们也可以使用-nts-
data.table