在 R 中用规则划分列
Dividing column with rule in R
我想用这个规则制作某个栏目:
Y2000/S2000=NEW2000
....
这就是我想要的例子
Y2000 Y2001 Y2003 S2000 S2001 S2003 | NEW2000 NEW2001 NEW2003
5 10 15 1 5 15 | 5/1=5 10/5=2 15/15=1
我尝试在 dplyr 包中使用 mutate 但我不熟悉该功能。
如何在 R... 中编写代码?
以下是计算所需输出中的三列的方法。
library(dplyr)
your_data %>%
mutate(
NEW2000 = Y2000 / S2000,
NEW2001 = Y2001 / S2001,
NEW2003 = Y2003 / S2003
)
如果您有成百上千个这样的列,可以通过一些方法避免输入每个列的名称。
这里是如何为甚至很多列(年)做的
您的数据
df <- data.frame(Y2000=5, Y2001=10, Y2003=15, S2000=1, S2001=5, S2003=15)
定义您的新列名称
newcols <- sapply(c(2000,2001,2003), function(i) paste0("NEW",i))
[1] "NEW2000" "NEW2001" "NEW2003"
使用dplyr
library(dplyr)
df1 <- df %>%
rowwise() %>%
mutate_(.dots = setNames(paste0(gsub("NEW","Y",newcols),"/",gsub("NEW","S",newcols)), newcols))
输出
Y2000 Y2001 Y2003 S2000 S2001 S2003 NEW2000 NEW2001 NEW2003
1 5 10 15 1 5 15 5 2 1
我想用这个规则制作某个栏目: Y2000/S2000=NEW2000 ....
这就是我想要的例子
Y2000 Y2001 Y2003 S2000 S2001 S2003 | NEW2000 NEW2001 NEW2003
5 10 15 1 5 15 | 5/1=5 10/5=2 15/15=1
我尝试在 dplyr 包中使用 mutate 但我不熟悉该功能。 如何在 R... 中编写代码?
以下是计算所需输出中的三列的方法。
library(dplyr)
your_data %>%
mutate(
NEW2000 = Y2000 / S2000,
NEW2001 = Y2001 / S2001,
NEW2003 = Y2003 / S2003
)
如果您有成百上千个这样的列,可以通过一些方法避免输入每个列的名称。
这里是如何为甚至很多列(年)做的
您的数据
df <- data.frame(Y2000=5, Y2001=10, Y2003=15, S2000=1, S2001=5, S2003=15)
定义您的新列名称
newcols <- sapply(c(2000,2001,2003), function(i) paste0("NEW",i))
[1] "NEW2000" "NEW2001" "NEW2003"
使用dplyr
library(dplyr)
df1 <- df %>%
rowwise() %>%
mutate_(.dots = setNames(paste0(gsub("NEW","Y",newcols),"/",gsub("NEW","S",newcols)), newcols))
输出
Y2000 Y2001 Y2003 S2000 S2001 S2003 NEW2000 NEW2001 NEW2003
1 5 10 15 1 5 15 5 2 1