有条件地组合来自数据框中不同列的单词
Conditionally combine words from separate columns in a data frame
我有一个包含 3 列的数据框,所有列都是字符。我想使用此数据框来创建公式,因此我需要确保数据框已格式化,以便我可以将它们粘贴到方程式中。
第一列包含统计函数(例如 log10、exp)。第二个包含一个解释变量。第 3 列包含有关模型类型的信息,这应该用于定义是否应应用以下功能。
我想编辑第 2 列,以便将第 1 列中的字母放在字符串的前面。但我希望第二列中的文本带有括号。我只想将此功能应用于第 3 列中包含特定单词的某些模型。所以一些示例数据:
Function <- c("exp","log10","exp")
Variable <- c("x","y","z")
Model_type <- c("Model_Yes","Model_Yes","Model_No")
Test <- data.frame(Function,Variable,Model_type)
Test[, ] <- lapply(Test[, ], as.character)
我认为基于 等类似问题,我需要这样的东西:
Test$Variable <- ifelse((grepl("No", Test$Model_type)),
Test$Variable,
paste(Test$Function,Test$Variable))
但这对 'No' Model_types 不起作用,也不会在原始变量字符串周围放置方括号。这是我想要的输出。
Test$Variable <- c("exp(x)","log10(y)","z")
预先感谢您对此提供的任何帮助。
您可以使用 paste0
并添加滞后和前导括号
将变量粘贴在一起
paste0(Test$Function, "(", Test$Variable, ")")
#[1] "exp(x)" "log10(y)" "exp(z)"
所以,最后的命令是
Test$Variable <- with(Test, ifelse(grepl("No", Model_type),
as.character(Variable), paste0(Function, "(", Variable, ")")))
Test
# Function Variable Model_type
#1 exp exp(x) Model_Yes
#2 log10 log10(y) Model_Yes
#3 exp z Model_No
我有一个包含 3 列的数据框,所有列都是字符。我想使用此数据框来创建公式,因此我需要确保数据框已格式化,以便我可以将它们粘贴到方程式中。
第一列包含统计函数(例如 log10、exp)。第二个包含一个解释变量。第 3 列包含有关模型类型的信息,这应该用于定义是否应应用以下功能。
我想编辑第 2 列,以便将第 1 列中的字母放在字符串的前面。但我希望第二列中的文本带有括号。我只想将此功能应用于第 3 列中包含特定单词的某些模型。所以一些示例数据:
Function <- c("exp","log10","exp")
Variable <- c("x","y","z")
Model_type <- c("Model_Yes","Model_Yes","Model_No")
Test <- data.frame(Function,Variable,Model_type)
Test[, ] <- lapply(Test[, ], as.character)
我认为基于
Test$Variable <- ifelse((grepl("No", Test$Model_type)),
Test$Variable,
paste(Test$Function,Test$Variable))
但这对 'No' Model_types 不起作用,也不会在原始变量字符串周围放置方括号。这是我想要的输出。
Test$Variable <- c("exp(x)","log10(y)","z")
预先感谢您对此提供的任何帮助。
您可以使用 paste0
并添加滞后和前导括号
paste0(Test$Function, "(", Test$Variable, ")")
#[1] "exp(x)" "log10(y)" "exp(z)"
所以,最后的命令是
Test$Variable <- with(Test, ifelse(grepl("No", Model_type),
as.character(Variable), paste0(Function, "(", Variable, ")")))
Test
# Function Variable Model_type
#1 exp exp(x) Model_Yes
#2 log10 log10(y) Model_Yes
#3 exp z Model_No