R 将值与特定列相乘
我想将一个值(0.045)与数据集中的特定列(以“I”开头)相乘。还有一个名为“id”的列,所有行的值都为0.045 我试过这个,但不起作用:R 将值与特定列相乘,r,tidyverse,R,Tidyverse,我想将一个值(0.045)与数据集中的特定列(以“I”开头)相乘。还有一个名为“id”的列,所有行的值都为0.045 我试过这个,但不起作用: df %>% mutate(across(starts_with("i")), ~.id) 要相乘的列可以根据位置或它们都以“i”开头的事实来指定 希望有人能帮助我 非常感谢 马格纳斯试试这个。为了创建示例,我使用了irisdataset。请注意,用于变换列的新定义应该在cross()内部,而不是在它外部,就像您在共享代
df %>%
mutate(across(starts_with("i")), ~.id)
要相乘的列可以根据位置或它们都以“i”开头的事实来指定
希望有人能帮助我
非常感谢
马格纳斯试试这个。为了创建示例,我使用了
iris
dataset。请注意,用于变换列的新定义应该在cross()
内部,而不是在它外部,就像您在共享代码中所做的那样。以下是解决方案:
library(tidyverse)
#Code
iris %>%
mutate(across(starts_with("Sepal"), ~.*0.045))
cols_bool <- startsWith(names(iris), "Sepal")
cbind(iris[,!cols_bool, drop = FALSE], iris[,cols_bool, drop = FALSE] * 0.045)
输出(某些行):
基本R解决方案:
library(tidyverse)
#Code
iris %>%
mutate(across(starts_with("Sepal"), ~.*0.045))
cols_bool <- startsWith(names(iris), "Sepal")
cbind(iris[,!cols_bool, drop = FALSE], iris[,cols_bool, drop = FALSE] * 0.045)
cols\u bool您会丢失一个*
符号。此外,公式部分应该是cross()
的参数,而不是mutate()
的参数。你把它放错地方了。尝试df%>%mutate(跨越(以“i”开头,~.*id))