简单的if语句创建一个新变量

时间:2019-07-18 21:20:59

标签: r

使用R,我需要创建一个变量,其值为:  如果另一个变量的值小于固定值,则为“ *”  如果同一变量的值等于或大于固定值,则为“ ns”

在SAS中,这将是:

if lifeExp < 30  then x1="* ";
if lifeExp => 30 then x1="ns";

在R中,我想可能是这样的:

library(tidyverse)
library(gapminder)
gapminder %>%
   mutate(x1 = case_when(lifeExp < 30) ~"*")
   x1= case_when(lifeExp=> 30)~"ns")  -> new_data

我收到一条错误消息:

+   mutate(x1 = case_when(lifeExp < 30) ~"*")
Error: Column `x1` is of unsupported type quoted call
> x1= case_when(lifeExp=> 30)~"ns")  -> new_data
Error: unexpected '>' in "x1= case_when(lifeExp=>"

1 个答案:

答案 0 :(得分:0)

我假设您已将数据存储在数据框中。如果使用向量(表中没有内容),则将无法使用。但是,您没有指定对象,所以我假设您正在使用某种表。

让您的数据存储在名为dt的数据框中。这是两个解决方案:

# Base R solution:
dt$x1 <- ifelse(test = dt$lifeExp < 30, yes = "*", no = "")

# Data table solution
library(data.table)
dt <- as.data.table(dt)
dt[, x1 := ifelse(test = lifeExp < 3, yes = "*", no = "ns")]