我有一个名为Country的变量,我想创建一个Country等于澳大利亚和希腊的子集。在这种情况下,我试图这样做并失败。
CUTdata <- subset(NEWdata, Country == c('Australia','Greece'))
这不起作用。实现这种逻辑的另一种方法是什么?
答案 0 :(得分:2)
使用grep。就像在Unix中一样。您也可以忽略大小写并进行部分匹配。
CUTdata <- grep( 'Australia|Greece' , NEWdata, value = T, ignore.case = T)
答案 1 :(得分:0)
....或者使用sqldf
包:)
library(sqldf)
sqldf("select * from Newdata where Country in ('Australia' ,'Greece')")
答案 2 :(得分:0)
以下是使用data.table
的选项。我们将'data.frame'转换为'data.table',将set
键列转换为'Country',并将数据集中的行的子集归为'Country'为'Australia'或'Greece'。< / p>
setDT(NEWdata, key='Country')[c('Australia', 'Greece')]
# Country value
#1: Australia 0.59826911
#2: Australia -0.08554095
#3: Australia 0.11953107
#4: Australia -0.94382724
#5: Greece -1.31690812
#6: Greece -0.33498679
#7: Greece 0.51633570
#8: Greece -0.60515695
#9: Greece -0.64859151
set.seed(24)
NEWdata <- data.frame(Country = sample(c("Australia",
"Greece", "USA", "UK"), 20, replace=TRUE), value=rnorm(20))