如果一个案例有缺失值而另一个变量有观测值,如何在 R 中创建 returns 1 的新变量?
How to create a new variable in R that returns 1 if a case has a missing value while another variable has an observed value?
我有两个包含缺失数据的变量 loon
和 profstat
。为了更好地了解缺失和需要估算的数据,我想在数据框中创建一个额外的变量 problem
,如果 1
每个案例 return =12=] 缺失,观察到 profstat
,否则为 0
。我生成了以下代码,它只给我输出 x[] = 1
。这个问题有什么解决办法吗?
{
problem <- dim(length(t))
for (i in 1:nrow(dflapopofficial))
{
if (is.na(dflapopofficial$loon[i])==TRUE & is.na(dflapopofficial$profstat[i])==FALSE) {
dflapopofficial$problem[i]=1
} else {
dflapopofficial$problem[i]=0
}
return(problem)
}
这里有一些地方可以改进:
- 请记住,R 中的许多操作都是矢量化的。在进行逻辑检查等时,您不需要遍历向量中的每个元素。
is.na(some_condition) == TRUE
与 is.na(some_condition)
相同,is.na(some_condition) == FALSE
与 !is.na(some_condition)
相同
- 如果你想在一个数据框中写一个新列,并且你指的是那个数据框中的几个变量,使用
within
可以节省你大量的输入 - 特别是如果你的数据框有一个长名称
- 您正在返回
problem
,但在您的循环中,您正在写入 dflapipofficial$problem
,这是一个不同的变量。
- 如果要写入 1 和 0,可以使用
+(logical_vector)
将逻辑隐式转换为数字
将所有这些放在一起,您可以用一行替换整个循环:
within(dflapopofficial, problem <- +(is.na(loon) & !is.na(profstat)))
记得将结果存储到数据框或它的副本中,例如
df <- within(dflapopofficial, problem <- +(is.na(loon) & !is.na(profstat)))
所以 df
只是 dflapopofficial
的虚幻与你的额外专栏。
我有两个包含缺失数据的变量 loon
和 profstat
。为了更好地了解缺失和需要估算的数据,我想在数据框中创建一个额外的变量 problem
,如果 1
每个案例 return =12=] 缺失,观察到 profstat
,否则为 0
。我生成了以下代码,它只给我输出 x[] = 1
。这个问题有什么解决办法吗?
{
problem <- dim(length(t))
for (i in 1:nrow(dflapopofficial))
{
if (is.na(dflapopofficial$loon[i])==TRUE & is.na(dflapopofficial$profstat[i])==FALSE) {
dflapopofficial$problem[i]=1
} else {
dflapopofficial$problem[i]=0
}
return(problem)
}
这里有一些地方可以改进:
- 请记住,R 中的许多操作都是矢量化的。在进行逻辑检查等时,您不需要遍历向量中的每个元素。
is.na(some_condition) == TRUE
与is.na(some_condition)
相同,is.na(some_condition) == FALSE
与!is.na(some_condition)
相同
- 如果你想在一个数据框中写一个新列,并且你指的是那个数据框中的几个变量,使用
within
可以节省你大量的输入 - 特别是如果你的数据框有一个长名称 - 您正在返回
problem
,但在您的循环中,您正在写入dflapipofficial$problem
,这是一个不同的变量。 - 如果要写入 1 和 0,可以使用
+(logical_vector)
将逻辑隐式转换为数字
将所有这些放在一起,您可以用一行替换整个循环:
within(dflapopofficial, problem <- +(is.na(loon) & !is.na(profstat)))
记得将结果存储到数据框或它的副本中,例如
df <- within(dflapopofficial, problem <- +(is.na(loon) & !is.na(profstat)))
所以 df
只是 dflapopofficial
的虚幻与你的额外专栏。