R 如果另一列中有值,则创建具有逻辑值的新列>;0

R 如果另一列中有值,则创建具有逻辑值的新列>;0,r,if-statement,dataframe,R,If Statement,Dataframe,R是新来的,所以请容忍我。我有一个带有值的数据框 x y 1 2 4 4 5 3 6 0 我想创建第三列,用TRUE或FALSE指示列y中的值是否为0 x y z 1 2 TRUE 0 4 TRUE 5 3 TRUE 6 0 FALSE 比较lhs和rhs以获得逻辑向量。通过将输出指定为新列('z'),我们在原始数据集“df1”中创建新列 df1$z <- df1$y > 0 df1$z 0 比较lhs和rhs以获得逻辑向量。通过将输出指定为新列('z'),我们在原始数据集“

R是新来的,所以请容忍我。我有一个带有值的数据框

x y
1 2
4 4
5 3
6 0 
我想创建第三列,用TRUE或FALSE指示列y中的值是否为0

x y z
1 2 TRUE
0 4 TRUE
5 3 TRUE
6 0 FALSE

比较lhs和rhs以获得逻辑向量。通过将输出指定为新列('z'),我们在原始数据集“df1”中创建新列

df1$z <- df1$y > 0
df1$z 0

比较lhs和rhs以获得逻辑向量。通过将输出指定为新列('z'),我们在原始数据集“df1”中创建新列

df1$z <- df1$y > 0
df1$z 0

为了避免if-else循环,您还可以始终创建一个带有“空”值的列

类似的方法也可以奏效(尽管上面提出的解决方案当然更好):


df$z 0]您也可以始终使用“空”值创建一列,以避免if-else循环

类似的方法也可以奏效(尽管上面提出的解决方案当然更好):


df$z 0]一个更快的替代解决方案(尽管这只在处理大型数据集时成为一个关键问题)


一个更快的替代解决方案(尽管这只在处理大型数据集时成为一个关键问题)


成功了!我想的太难了,尝试使用ifelse函数。谢谢你的帮助!成功了!我想的太难了,尝试使用ifelse函数。谢谢你的帮助!这也可以,但数据集是巨大的。非常感谢你关注我的问题!我怀疑仅仅用一个基本的计算速度会明显加快。我在这里检查过了。这确实是一个小小的差别。无论如何,知道同一问题的替代解决方案通常是好的;)这也可以,但数据集是巨大的。非常感谢你关注我的问题!我怀疑仅仅用一个基本的计算速度会明显加快。我在这里检查过了。这确实是一个小小的差别。无论如何,知道同一问题的替代解决方案通常是好的;)
library(data.table)

setDT(df1)

df1[, z := y > 0]