【问题标题】:In R: How to create new variables based on conditions on existing variables在 R 中:如何根据现有变量的条件创建新变量
【发布时间】:2015-05-07 03:57:23
【问题描述】:

在 R 中,我想根据我应用于现有变量(var1 和 var2)的条件创建两个新变量(var3 和 var4),这些变量有重复的记录。这是我的数据的样子。

Var1  var2  
01     A
01     B
01     A
02     C
02     C
03     D
04     E
04     D
04     F
.      .
.      .
.      .
.      .
.      .

我会在 SAS 中使用以下 if-else-then 语句。

if var1 = 01 and var2 = "A" then do; var3 = "New York"; var4= "Buffalo"; end; else;
if var1 = 01 and var2 = "B" then do; var3 = "New York"; var4= "Cornell"; end; else;
if var1 = 02 and var2 = "C" then do; var3 = "North Carolina"; var4= "Raleigh"; end; else;
if var1 = 03 and var = "D"then do; var3 = "Texas"; var4= "Dallas"; end; else;

我的输出会是这样的

Var1  var2    var3             var4
01     A      New York         Buffalo
01     B      New York         Cornell
01     A      New York         Buffalo
02     C      North Carolina   Raleigh
02     C      North Carolina   Raleigh
03     D      Texas            Dallas
.      .      .                 .
.      .      .                 . 
.      .      .                 .
.      .      .                 .    

非常感谢在 R 中创建上述输出的任何帮助。是否需要使用 if-else 和 for 语句、ifelse 等?

【问题讨论】:

  • 查看ifelse()
  • 感谢安德鲁·泰勒
  • 您还可以查看factor(levels=,labels=),将标签简单地应用于 Var1 和 var2,使它们看起来像 var3 和 var4。

标签: r


【解决方案1】:
df$var3<-ifelse(Var1==01, "New York",
         ifelse(Var1==02, "North Carolina",
         ifelse(Var1==03, "Texas", NA)))
df$var4<-....

或者通过应用标签:

df$var3<-factor(df$Var1,
                levels = 1:3,
                labels = c("New York","North Carolina","Texas"))

【讨论】:

    【解决方案2】:

    您可以创建一个索引数据集 ('df2') 并将其与原始数据集 ('df1') 合并

     merge(df1, df2)
     #  var1 var2           var3    var4
     #1   01    A       New York Buffalo
     #2   01    A       New York Buffalo
     #3   01    B       New York Cornell
     #4   02    C North Carolina Raleigh
     #5   02    C North Carolina Raleigh
     #6   03    D          Texas  Dallas
    

    数据

    df1 <- structure(list(var1 = c("01", "01", "01", "02", "02", "03"), 
    var2 = c("A", "B", "A", "C", "C", "D")), .Names = c("var1", 
    "var2"), row.names = c(NA, -6L), class = "data.frame")
    
    df2 <-  data.frame(var1=c('01', '01', '02', '03'), var2=LETTERS[1:4], 
     var3=c('New York', 'New York', 'North Carolina', 'Texas'),
     var4=c('Buffalo', 'Cornell', 'Raleigh', 'Dallas'))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多