【问题标题】:conditional subsetting from data.frame in RR中data.frame的条件子集
【发布时间】:2019-08-13 01:30:53
【问题描述】:

我有一个data.frame HERE。我想知道如何将名为 dot.names 的变量(见下文)子集化为 data.frame 中变量 controlFALSE 的行,并且 按字母顺序排列答案 基于 BASE R 中的D$study.name

这是我使用但没有成功的代码:

D <- read.csv("https://raw.githubusercontent.com/izeh/m/master/k.csv") # data.frame

dot.names <- c("ESL", "prof" ,"scope", "type")             

D[dot.names & !control] 

【问题讨论】:

    标签: r function dataframe subset


    【解决方案1】:

    如果D$control 是逻辑列-

    res1 <- D[order(D$study.name), ]
    
    res2 <- res1[!res1$control, dot.names]
    

    如果D$control是字符列-

    D[D$control == "FALSE", dot.names]
    

    一个使用subset的在线-

    subset(D[order(D$study.name), ], !control, select = dot.names)
    

    dplyr -

    D %>% 
      filter(!control) %>% 
      arrange(study.name) %>% 
      select(dot.names)
    

    【讨论】:

    • @rnorouzian 他们应该是。试试-dot.names &lt;- c("mpg", "hp"); res1 &lt;- mtcars[order(mtcars$wt), ]; res2 &lt;- res1[res1$cyl == 4, dot.names]; res3 &lt;- subset(mtcars[order(mtcars$wt), ], cyl == 4, select = dot.names); identical(res2, res3); all.equal(res2, res3)。也试试all.equal()。我认为相同是非常严格的。告诉我。
    • 我认为您的解决方案与nrowsubset 解决方案不完全相同33 行,但nrow 为您的res2 解决方案提供40 行!!!跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-10
    • 2019-06-18
    • 2018-04-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多