删除在R中未选择备选方案的选择集的所有行
我正在努力编写一些数据管理所需的代码。我提前表示歉意,因为我相信它有一个非常简单的解决方案,但我在别处找不到任何信息 我正在使用R中的mlogit命令对数据进行长格式分析。对于每个选择集,应选择一个备选方案;否则,mlogit命令将失败,并出现以下错误:删除在R中未选择备选方案的选择集的所有行,r,subset,data-cleaning,R,Subset,Data Cleaning,我正在努力编写一些数据管理所需的代码。我提前表示歉意,因为我相信它有一个非常简单的解决方案,但我在别处找不到任何信息 我正在使用R中的mlogit命令对数据进行长格式分析。对于每个选择集,应选择一个备选方案;否则,mlogit命令将失败,并出现以下错误: Error in if (abs(x - oldx) < ftol) { : missing value where TRUE/FALSE needed if(abs(x-oldx)
Error in if (abs(x - oldx) < ftol) { :
missing value where TRUE/FALSE needed
if(abs(x-oldx)library(dplyr)
df <- df %>% group_by(ID) %>% mutate(sum = sum(CHOICE))
df <- df[df$sum != 0 , ]
数据:
df给你:
library(dplyr)
df <- df %>% group_by(ID) %>% mutate(sum = sum(CHOICE))
df <- df[df$sum != 0 , ]
数据:
df将ave
与any
结合使用(借用@Richo'sdf
):
将ave
与any
结合使用(借用@Richo的df
):
一种方法是使用data.table
(使用@Richo的df
)。我们将“data.frame”转换为“data.table”(setDT(df)
),按“ID”分组,得到data.table的子集(.SD
)
或者像@docendodiscimus提到的那样
setDT(df)[, .SD[any(CHOICE)], by = ID]
更快的选择可能是使用.I
获取行索引,然后提取行
setDT(df)[df[, .I[any(CHOICE)], by = ID]$V1]
一种方法是使用data.table
(使用@Richo的df
)。我们将“data.frame”转换为“data.table”(setDT(df)
),按“ID”分组,得到data.table的子集(.SD
)
或者像@docendodiscimus提到的那样
setDT(df)[, .SD[any(CHOICE)], by = ID]
更快的选择可能是使用.I
获取行索引,然后提取行
setDT(df)[df[, .I[any(CHOICE)], by = ID]$V1]
请以最小的可复制形式提供问题,以便其他人可以轻松地从您的post复制问题并粘贴到他们的会话中并查看结果。必须提供所有库语句和输入,如果较大,则需要将其缩减到最小大小,以说明问题。dput(无论什么)
(不作为图像)重复显示输入数据。有关如何提出问题的信息,请参见1)2)3)请以最小的可复制形式提供问题,也就是说,任何其他人都可以轻松地从您的帖子中复制并粘贴到他们的会话中并查看结果。必须提供所有库语句和输入,如果较大,则需要将其缩减到最小大小,以说明问题。dput的帖子输出(无论什么)
(不是图像)以再现方式显示输入数据。有关如何提出问题的信息,请参见1)2)3)或setDT(df)[,.SD[any(CHOICE)],by=ID]
或setDT(df)[,.SD[any(CHOICE)],by=ID]
setDT(df)[df[, .I[any(CHOICE)], by = ID]$V1]