Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除在R中未选择备选方案的选择集的所有行_R_Subset_Data Cleaning - Fatal编程技术网

删除在R中未选择备选方案的选择集的所有行

删除在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)

我正在努力编写一些数据管理所需的代码。我提前表示歉意,因为我相信它有一个非常简单的解决方案,但我在别处找不到任何信息

我正在使用R中的mlogit命令对数据进行长格式分析。对于每个选择集,应选择一个备选方案;否则,mlogit命令将失败,并出现以下错误:

Error in if (abs(x - oldx) < ftol) { : 
missing value where TRUE/FALSE needed
if(abs(x-oldx) 对于我的数据集,确实存在一些没有选择备选方案的选择集。因此,我的问题是:如何删除没有选择备选方案的选择集的所有行? 在本例中,我希望删除ID 2的所有行,因为此响应者没有做出任何选择:

i、 例如,选择变量的值始终为“FALSE”

非常感谢您的帮助!

给您:

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's
df
):


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]