【问题标题】:Deleting everything but relevant Data删除除相关数据外的所有内容
【发布时间】:2022-01-13 18:19:12
【问题描述】:

我使用代码:

student_data1 %

头()

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

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

提前感谢您! :)

【问题讨论】:

    标签: r dataframe rows delete-row


    【解决方案1】:

    当我们有可以查看的数据以确定发生了什么时,它总是很有帮助的。将来,您可以使用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 创建

    【讨论】:

    • 我的天啊!!太感谢了!你无法想象这对我来说有多重要 :) 祝你有美好的一天! :)
    • 很高兴它为您工作,祝您有美好的一天
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-03
    • 1970-01-01
    相关资源
    最近更新 更多