使用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=>"
答案 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")]