删除除相关数据以外的所有内容

Deleting everything but relevant Data

我使用代码:

student_data1 <- student_data1[!(student_data1$gvkey == 6310),] %>%

头()

删除 gvkey 6310 的公司,但它正在删除其他所有内容并保留 6310。

我需要如何更改代码?如果我想删除 6310 和 9555,代码会是什么样子?

提前致谢! :)

当我们有数据可以查看以确定发生了什么时,这总是很有帮助的。将来您可以使用 dput(head(student_data1, 10)) 之类的方式共享您的一些数据,然后将其输出复制并粘贴到您的问题中。我们将生成一些数据以在此处显示示例。

student_data1 <-
  data.frame(
    gvkey = rep(c(6310 , 9555, 2222, 11, 2), each = 10),
    Var1 = rnorm(50)
  )

head(student_data1, 5)
#>   gvkey         Var1
#> 1  6310  0.065167828
#> 2  6310  0.334672998
#> 3  6310 -0.459434631
#> 4  6310 -0.002706843
#> 5  6310  0.596642565

nrow(student_data1)
#> [1] 50

从您发布的代码来看,它似乎应该满足您的需求,只需使用您使用的语法删除 gvkey 6310,尽管通常我们会使用 !=而不是 !(==)。我唯一可以推测的是,您可能错过了实际脚本中的 !

df <- student_data1[!(student_data1$gvkey == 6310) , ]

head(df, 5)
#>    gvkey       Var1
#> 11  9555 -0.1338284
#> 12  9555 -3.4963800
#> 13  9555  0.7090384
#> 14  9555 -0.5466933
#> 15  9555 -1.5392845

nrow(df)
#> [1] 40

要删除多个值,通常最简单的方法是使用 %in% 运算符。

df <- student_data1[!student_data1$gvkey %in% c(6310, 9555) , ]

head(df, 5)
#>    gvkey       Var1
#> 21  2222  2.9606101
#> 22  2222  0.7001521
#> 23  2222  0.1065952
#> 24  2222  0.7103071
#> 25  2222 -0.3279968

nrow(df)
#> [1] 30

reprex package (v2.0.1)

于 2021-12-08 创建