1

以前の質問を 20 分ほど調べましたが、探しているものが見つかりませんでした。名前のリストに基づいてサブセット化したい大きなデータ フレームがありますが、データ フレーム内の名前には、リストに示されていない接尾辞が含まれている場合もあります。

言い換えれば、次のことを行うためのより簡単な一般的な方法 (無限の数の接尾辞の場合) はありますか?

data <- data.frame("name"=c("name1","name1_post1","name2","name2_post1",
                            "name2_post2","name3","name4"),
                   "data"=rnorm(7,0,1),
                   stringsAsFactors=FALSE)

names <- c("name2","name3")

subset <- data[ data$name %in% names | data$name %in% paste0(names,"_post1") | data$name %in% paste0(names,"_post2") , ]

@Arunの答えに応えて。私のデータの名前には実際には複数のアンダースコアが含まれているため、問題がより複雑になります。

data <- data.frame("name"=c("name1_target_time","name1_target_time_post1","name2_target_time","name2_target_time_post1",
                            "name2_target_time_post2","name3_target_time","name4_target_time"),
                   "data"=rnorm(7,0,1),
                   stringsAsFactors=FALSE)

names <- c("name2_target_time","name3_target_time")

subset <- data[ data$name %in% names | data$name %in% paste0(names,"_post1") | data$name %in% paste0(names,"_post2") , ]
4

2 に答える 2

0

grep ソリューションは、おそらく次のようになります。

subset <- data[grep("(name2)|(name3)",names(data)),]
于 2013-04-16T20:08:09.617 に答える