簡體   English   中英

如何在數據框中的列上提取(或子集)具有條件的所有行?

[英]How to extract (or subset) all the rows with a condition on a column in a dataframe?

我有以下數據框,並希望提取與status == 1相同的組對應的所有行。

status列為0或1。

df<-data.frame(time= rep(1:4,times=c(2,3,5,4)),status=c(0,0,1,1,0,0,0,0,0,0,1,0,0,0))

  Input Data 

   time status

1     1      0
2     1      0
3     2      1
4     2      1
5     2      0
6     3      0
7     3      0
8     3      0
9     3      0
10    3      0
11    4      1
12    4      0
13    4      0
14    4      0

期望的輸出(按順序重新編號組列)。

time status

   1      1
   1      1
   1      0
   2      1
   2      0
   2      0
   2      0

我的實際data.frame的維度是10 ^ 6乘5的順序。

謝謝您的幫助。

嗯,所以你想得到第二組和第四組,因為這兩組都有一個狀態值,對嗎? 從這兩組你想得到整個輸出?

如果是這樣,那怎么樣:

df <- data.frame(time = rep(1:4, times = c(2,3,5,4)),
                 status = c(0,0,1,1,0,0,0,0,0,0,1,0,0,0))

id <- unique(df[df$status == 1, "time"])
df2 <- df[df$time %in% id, ]

編輯:

df2$time <- factor(df2$time, labels = c(1,2))

我有點困惑,因為你正在嘗試做兩個單獨的事情 - 首先想要提取狀態== 1的行,而在你想要的輸出中,有些行有零。 這是提取狀態== 1的行的方法之一。

df1 <- data.frame(time= rep(1:4,times=c(2,3,5,4)),status=c(0,0,1,1,0,0,0,0,0,0,1,0,0,0))
df1$time <- factor(df1$time)
df1s <- split(df1, df1$time)
df1l <- lapply(df1s, function(x) {
            x[x$status == 1, ]
        })
df1l <- do.call("rbind", df1l)

或者相反

df2 <- df1[df1$status == 1, ]
df2.l <- split(df2, as.factor(df2$time))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM