根據(jù)涉及字段的條件提取數(shù)據(jù)幀的子集我有一個(gè)大的CSV,其中包含來(lái)自不同位置的醫(yī)學(xué)調(diào)查結(jié)果(該位置是數(shù)據(jù)中存在的因素)。由于某些分析特定于某個(gè)位置并且為了方便起見(jiàn),我想僅從這些位置提取具有行的子幀。碰巧該位置是第一個(gè)字段所以是的,我可以通過(guò)對(duì)CSV行進(jìn)行排序來(lái)實(shí)現(xiàn),但我想學(xué)習(xí)如何在R中進(jìn)行操作,因?yàn)槲掖_信我需要將其用于其他列。所以,簡(jiǎn)而言之,問(wèn)題是:給定一個(gè)數(shù)據(jù)框foo,如何創(chuàng)建另一個(gè)數(shù)據(jù)框條,其中只包含來(lái)自foo的行foo$location = 'there'?
2 回答

天涯盡頭無(wú)女友
TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超9個(gè)贊
以下是兩種主要方法。我更喜歡這個(gè)因?yàn)樗目勺x性:
bar <- subset(foo, location == "there")
請(qǐng)注意,您可以使用&
和|
將許多條件串起來(lái)并創(chuàng)建復(fù)雜的子集。
第二種是索引方法。您可以使用數(shù)字或布爾切片為R中的行編制索引。foo$location == "there"
返回一個(gè)矢量T
和F
值,其長(zhǎng)度與行的長(zhǎng)度相同foo
。您可以這樣做只返回條件返回true的行。
foo[foo$location == "there", ]

慕妹3146593
TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超9個(gè)贊
只是為了擴(kuò)展上面的答案,你也可以索引你的列而不是指定列名,這也可能是有用的,這取決于你正在做什么。鑒于您的位置是第一個(gè)字段,它看起來(lái)像這樣:
bar <- foo[foo[ ,1] == "there", ]
這很有用,因?yàn)槟梢詫?duì)列值執(zhí)行操作,例如循環(huán)遍歷特定列(您也可以通過(guò)索引行號(hào)來(lái)執(zhí)行相同操作)。
如果您需要對(duì)多個(gè)列執(zhí)行某些操作,這也很有用,因?yàn)槟梢灾付ㄒ幌盗辛校?/p>
foo[foo[ ,c(1:N)], ]
或者特定列,正如您所期望的那樣。
foo[foo[ ,c(1,5,9)], ]
- 2 回答
- 0 關(guān)注
- 565 瀏覽
添加回答
舉報(bào)
0/150
提交
取消