【问题标题】:How to select columns by values in a row in R如何按R中一行中的值选择列
【发布时间】:2015-05-06 03:33:24
【问题描述】:

我有一个大数据框标记字符串中三元组的出现,其中字符串是行,三元组是列,值标记三元组是否出现在字符串中。

所以是这样的:

strs <- c('this', 'that', 'chat', 'chin')
thi <- c(1, 0, 0, 0)
tha <- c(0, 1, 0, 0)
hin <- c(0, 0, 0, 1)
hat <- c(0, 1, 1, 0)
df <- data.frame(strs, thi, tha, hin, hat)
df

#  strs thi tha hin hat
#1 this   1   0   0   0
#2 that   0   1   0   1
#3 chat   0   0   0   1
#4 chin   0   0   1   0

我想获取给定行或给定字符串为 1 的所有列/三元组。

所以对于第 2 行,字符串“that”,结果将是一个如下所示的数据框:

  str tha hat
1 this  0   0
2 that  1   1
3 chat  0   1
4 chin  0   0

我该怎么做?

【问题讨论】:

    标签: r subset trigram


    【解决方案1】:

    这将为您提供所需的输出 df。

    givenStr <- "that"
    row <- df[df$strs==givenStr,]
    df[,c(1,1+which(row[,-1]==1))]
    

    【讨论】:

      【解决方案2】:

      在一个班轮中:

      df[as.logical(df[df$strs=='that',])]
      
      #  strs tha hat
      #1 this   0   0
      #2 that   1   1
      #3 chat   0   1
      #4 chin   0   0
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多