R数据框操作

时间:2018-08-03 22:24:07

标签: r dataframe

我正在尝试使用数据框行进行一些操作。假设我有下一个数据框:

Label<-c(‘A’, ‘A’,’B’,’B’,’A’,’B’,’A’,’X’,’Y’)
Var <- c(1,2,4,7,3,4,6,10,13)
Data<- data.frame(Label,Var)

我希望当Label = A时,Var中的值乘以X,而当label = B时,Y中乘以

我试图编写一个函数,但是没有成功,可能我缺乏使用数据框架的经验。

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

以下是快速解答:

library(tidyverse)

Label<-c(‘A’, ‘A’,’B’,’B’,’A’,’B’,’A’,’X’,’Y’)
Var <- c(1,2,4,7,3,4,6,10,13)
Dat <- data_frame(Label,Var) #use data_frame and don't call the dataframe 'Data'

Dat <- Dat %>% # a pipe moves to next command
         mutate( #to create a new variable
           new_var = 
            case_when( #runs a series of ifelse statements
              Label == 'A' ~ Var*X, #framework: if ~ then
              Label == 'B' ~ Var*Y
         )
       )

答案 1 :(得分:1)

好的旧的简单base解决方案怎么样?

X <- 3
Y <- 2
Data$NewVar <- with(Data, ifelse(Label == "A", Var * X, Var * Y))
Data
  Label Var NewVar
1     A   1      3
2     A   2      6
3     B   4      8
4     B   7     14
5     A   3      9
6     B   4      8
7     A   6     18
8     X  10     20
9     Y  13     26

ifelse评估第一个条件是否为真,然后评估下一条语句,否则评估第二条。

相关问题