R-根据条件选择列
我试图找到一种简单的方法,根据条件(R-根据条件选择列,r,function,dplyr,purrr,R,Function,Dplyr,Purrr,我试图找到一种简单的方法,根据条件(db$Scale)从数据集中选择不同的列(db$Item1,db$Item2,db$Item3,db$Item4)。最好使用dplyr。这里有一个可复制的例子 Scale <- c(1, 1, 1, 2, 2, 3, 3) Item1 <- c(4, 5, 4, 6, 7, 7, 6) Item2 <- c(2, 3, 6, 3, 4, 5, 4) Item3 <- c(6, 7, 3, 4, 5, 6, 5) Item4 <-
db$Scale
)从数据集中选择不同的列(db$Item1
,db$Item2
,db$Item3
,db$Item4
)。最好使用dplyr。这里有一个可复制的例子
Scale <- c(1, 1, 1, 2, 2, 3, 3)
Item1 <- c(4, 5, 4, 6, 7, 7, 6)
Item2 <- c(2, 3, 6, 3, 4, 5, 4)
Item3 <- c(6, 7, 3, 4, 5, 6, 5)
Item4 <- c(2, 5, 3, 5, 2, NA, NA)
db <- data.frame(Scale, Item1, Item2, Item3, Item4)
我需要做的是创建一个新的数据集(比如:db.X
),我有一个旧的列Scale
(新名称:Scale.X
),然后是一个新的列Item1.X
,它由列Item1
下的值组成,用于刻度1和刻度2,以及量表3的项目3
列下的值。另外,我想在新列Item2.X
# Scale.X Item1.X Item2.X
#1 1 4 6
#2 1 5 7
#3 1 4 3
#4 2 3 4
#5 2 4 5
#6 3 5 6
#7 3 4 5
这就是你想要的吗:
db %>%
mutate(Scale.X = Scale) %>%
mutate(Item1.X = ifelse(Scale == 1, Item1, Item2),
Item2.X = Item3) %>%
select(Scale.X, Item1.X, Item2.X)
Scale.X Item1.X Item2.X
1 1 4 6
2 1 5 7
3 1 4 3
4 2 3 4
5 2 4 5
6 3 5 6
7 3 4 5
这就是你想要的吗:
db %>%
mutate(Scale.X = Scale) %>%
mutate(Item1.X = ifelse(Scale == 1, Item1, Item2),
Item2.X = Item3) %>%
select(Scale.X, Item1.X, Item2.X)
Scale.X Item1.X Item2.X
1 1 4 6
2 1 5 7
3 1 4 3
4 2 3 4
5 2 4 5
6 3 5 6
7 3 4 5
使用
数据表
-
setDT(db)
db[,Item1.x:=ifelse(Scale == 1, Item1, Item2)]
setnames(db,c("Scale","Item3"),c("Scale.x","Item2.x"))
db <- db[,.(Scale.x,Item2.x,Item1.x)]
使用
数据表
-
setDT(db)
db[,Item1.x:=ifelse(Scale == 1, Item1, Item2)]
setnames(db,c("Scale","Item3"),c("Scale.x","Item2.x"))
db <- db[,.(Scale.x,Item2.x,Item1.x)]
您说过:Item1.X由第1列下的值组成,用于刻度1和刻度2。这不是您所说的最终输出中应该显示的内容:Item1.X由第1列下的值组成,用于刻度1和刻度2。这不是最终输出中应该显示的内容