我有一个 Dataframe ,我想(1)选择所有包含 * 的单元格,然后(2)创建一个新的 Dataframe ,只包含每个星号前面的字符串。
下面是一个例子,玩具 Dataframe :
X1 <- data.frame(c("Tricho*", "Proteo", "Cyano*", "Gold", "Pseudo"))
X2 <- data.frame(c(" ", "alpha*", " ", "fish", "nitzs"))
X3 <- data.frame(c(" ", " ", " ", "bowl*", "ia"))
Data <- cbind(X1, X2, X3)
Data1 <- Data %>%
rename("X1" = "c..Tricho.....Proteo....Cyano.....Gold....Pseudo..",
"X2" = "c.......alpha..........fish....nitzs..",
"X3" = "c.................bowl.....ia..")
我正在尝试制作一个 Dataframe ,如下所示:
X4
Tricho*
alpha*
Cyano*
bowl*
我认为str_extract_all可以做到这一点,或者至少返回每个星号的位置,然后我可以使用它,但是我的真实的文件要大得多,我不确定使用str_extract_all是否可行。
我还尝试使用以下内容:
Data1 <- as.character(Data1)
out <- data.frame(Data1[endsWith(Data1, '*')])
View(out)
以及
Data1 <- as.character(Data1)
out2 <- data.frame(grep('*$', Data1, value = TRUE))
View(out2)
但这两个选项都不起作用。第一个选项产生了一个空白 Dataframe ,第二个选项只产生了一个 Dataframe ,其中c(“Tricho*",“Proteo”,“Cyano*",“Gold”,“Pseudo”)作为第一行,c(““,“alpha*",““,“fish”,“nitzs”)作为第二行,等等。
1条答案
按热度按时间nwo49xxi1#
一个选项是将所有其他值替换为
NA
,然后替换为unite
或者使用
base R