不理解 ifelse 语句
Not understanding the ifelse statement
我正在尝试根据其他两个变量重新编码一个变量,我认为我误解了 ifelse
语句的工作原理。
我有一列是字符串,另一列是整数。我希望新列与字符串 c1
相同,除非整数列 flag
等于 1,在这种情况下它将等于 XX
。
c1 flag EXPECTED OUTPUT
SS 0 SS
SS 1 XX
MM 0 MM
LL 0 LL
LL 0 LL
SS 1 XX
LL 0 LL
LL 1 XX
SS 0 SS
我这样使用 ifelse
:
df$expectedoutput <- ifelse(df$flag==1, "XX", df$c1)
我不确定这是否是重新编码的最佳方式。
当我要求查看新专栏时出现此错误:
Error in View : 'names' attribute [1849] must be the same length as the vector [1]
我相信你被stringsAsFactors=TRUE
咬了。这似乎给出了预期的输出:
df <- read.table(text="
c1 flag
SS 0
SS 1
MM 0
LL 0
LL 0
SS 1
LL 0
LL 1
SS 0", header=TRUE, stringsAsFactors=FALSE)
df$expected <- ifelse(df$flag == 1, "XX", df$c1)
> df
c1 flag expected
1 SS 0 SS
2 SS 1 XX
3 MM 0 MM
4 LL 0 LL
5 LL 0 LL
6 SS 1 XX
7 LL 0 LL
8 LL 1 XX
9 SS 0 SS
我正在尝试根据其他两个变量重新编码一个变量,我认为我误解了 ifelse
语句的工作原理。
我有一列是字符串,另一列是整数。我希望新列与字符串 c1
相同,除非整数列 flag
等于 1,在这种情况下它将等于 XX
。
c1 flag EXPECTED OUTPUT
SS 0 SS
SS 1 XX
MM 0 MM
LL 0 LL
LL 0 LL
SS 1 XX
LL 0 LL
LL 1 XX
SS 0 SS
我这样使用 ifelse
:
df$expectedoutput <- ifelse(df$flag==1, "XX", df$c1)
我不确定这是否是重新编码的最佳方式。
当我要求查看新专栏时出现此错误:
Error in View : 'names' attribute [1849] must be the same length as the vector [1]
我相信你被stringsAsFactors=TRUE
咬了。这似乎给出了预期的输出:
df <- read.table(text="
c1 flag
SS 0
SS 1
MM 0
LL 0
LL 0
SS 1
LL 0
LL 1
SS 0", header=TRUE, stringsAsFactors=FALSE)
df$expected <- ifelse(df$flag == 1, "XX", df$c1)
> df
c1 flag expected
1 SS 0 SS
2 SS 1 XX
3 MM 0 MM
4 LL 0 LL
5 LL 0 LL
6 SS 1 XX
7 LL 0 LL
8 LL 1 XX
9 SS 0 SS