第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

子集數(shù)據(jù)僅包含名稱與條件匹配的列

子集數(shù)據(jù)僅包含名稱與條件匹配的列

海綿寶寶撒 2019-11-28 12:40:40
我是否有一種方法可以基于以特定字符串開頭的列名來對數(shù)據(jù)進(jìn)行子集化?我有一些列的方式一樣ABC_1 ABC_2 ABC_3,有些像XYZ_1, XYZ_2,XYZ_3我們說。如何df僅基于包含上述文本部分的列(例如,ABC或XYZ)對我的子集進(jìn)行分類?我可以使用索引,但是列太分散在數(shù)據(jù)中,因此很難進(jìn)行硬編碼。另外,我只想包含這些值>0中的6每一個(gè)1的行,因此,如果以上任何一列在行中都有一個(gè),則可以切入我的最終數(shù)據(jù)幀。
查看完整描述

3 回答

?
慕姐8265434

TA貢獻(xiàn)1813條經(jīng)驗(yàn) 獲得超2個(gè)贊

試一試grepl您的名字data.frame。grepl將正則表達(dá)式與目標(biāo)TRUE匹配,如果找到匹配項(xiàng)則返回,F(xiàn)ALSE否則返回。該函數(shù)是矢量化的,因此您可以傳遞一個(gè)字符串向量來進(jìn)行匹配,并且您將獲得一個(gè)返回布爾值的向量。


#  Data

df <- data.frame( ABC_1 = runif(3),

            ABC_2 = runif(3),

            XYZ_1 = runif(3),

            XYZ_2 = runif(3) )


#      ABC_1     ABC_2     XYZ_1     XYZ_2

#1 0.3792645 0.3614199 0.9793573 0.7139381

#2 0.1313246 0.9746691 0.7276705 0.0126057

#3 0.7282680 0.6518444 0.9531389 0.9673290


#  Use grepl

df[ , grepl( "ABC" , names( df ) ) ]

#      ABC_1     ABC_2

#1 0.3792645 0.3614199

#2 0.1313246 0.9746691

#3 0.7282680 0.6518444


#  grepl returns logical vector like this which is what we use to subset columns

grepl( "ABC" , names( df ) )

#[1]  TRUE  TRUE FALSE FALSE

為了回答第二部分,我將創(chuàng)建子集data.frame,然后創(chuàng)建一個(gè)向量來索引要保留的行(邏輯向量),如下所示:


set.seed(1)

df <- data.frame( ABC_1 = sample(0:1,3,repl = TRUE),

            ABC_2 = sample(0:1,3,repl = TRUE),

            XYZ_1 = sample(0:1,3,repl = TRUE),

            XYZ_2 = sample(0:1,3,repl = TRUE) )


# We will want to discard the second row because 'all' ABC values are 0:

#  ABC_1 ABC_2 XYZ_1 XYZ_2

#1     0     1     1     0

#2     0     0     1     0

#3     1     1     1     0



df1 <- df[ , grepl( "ABC" , names( df ) ) ]


ind <- apply( df1 , 1 , function(x) any( x > 0 ) )


df1[ ind , ]

#  ABC_1 ABC_2

#1     0     1

#3     1     1


查看完整回答
反對 回復(fù) 2019-11-28
?
慕絲7291255

TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊


您也可以使用starts_with和dplyr的select(),像這樣:


df <- df %>% dplyr:: select(starts_with("ABC"))


查看完整回答
反對 回復(fù) 2019-11-28
?
楊__羊羊

TA貢獻(xiàn)1943條經(jīng)驗(yàn) 獲得超7個(gè)贊

以防萬一,對于data.table用戶來說,以下內(nèi)容適用于我:


df[, grep("ABC", names(df)), with = FALSE]


查看完整回答
反對 回復(fù) 2019-11-28
  • 3 回答
  • 0 關(guān)注
  • 561 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號