如何根据行末尾是否存在字符对R中的数据帧进行子集划分

如何根据行末尾是否存在字符对R中的数据帧进行子集划分,r,subset,R,Subset,我认为这个问题非常基本,人们以前不需要在这里问这个问题(我保证我已经认真看过了),但我正试图根据行是否以句点结束来在R中子集一个数据帧。原始df是单个向量,如: df = data.frame('data' = c(186., .08, .23, 182., 81., 16, 19)) 我想要一个数据帧,只包含以一个周期结束的数字,所以: df_wperiods = data.frame('data' = c(186., 182., 81.)) 我发现另一篇文章对如何在python中实现这

我认为这个问题非常基本,人们以前不需要在这里问这个问题(我保证我已经认真看过了),但我正试图根据行是否以句点结束来在R中子集一个数据帧。原始df是单个向量,如:

df = data.frame('data' = c(186., .08, .23, 182., 81., 16, 19)) 
我想要一个数据帧,只包含以一个周期结束的数字,所以:

df_wperiods = data.frame('data' = c(186., 182., 81.))
我发现另一篇文章对如何在python中实现这一点给出了很好的答案,内容如下:

df_wperiods = df[~df['name_of_column'].str.endswith(".")]
df_wperiods = subset(df, df$data == '%.')
我认为在R中应该是这样的:

df_wperiods = df[~df['name_of_column'].str.endswith(".")]
df_wperiods = subset(df, df$data == '%.')

但是“%”是SQL中的通配符,而不是R,我还没有在R中找到等价的通配符。那么我如何在R中做到这一点呢?

如果数据集有
字符
字符串,那么我们可以使用
grep
将最后一个字符匹配为
,并对行进行子集化

df[grep("\\.$", df$data), , drop = FALSE]

数据应该是数字还是字符串?它们是字符串!那么@akrun的答案就是我想说的。当我尝试使用它时,非常遗憾的是,它导致了一个没有数据的df:/--第一个$doing是什么?周期后没有任何东西/我们不希望周期后有任何东西,所以可能就是这样?当我取出第一个美元时,得到的df在每一行都有一个周期,这很接近,但不是我想要的。您知道如何仅获取以句点结尾的行吗?@AdrielBarrett-Johnson
$
是一个元字符,表示字符串的结尾。
也是一个元字符,表示任何字符。但是,当我们想将
匹配为点字符时,我们对其进行转义(```),以获得该字符的字面意义,而不是将其作为元字符进行计算。我们担心@AdrielBarrett Johnson正在处理一个实际为数字而非字符的示例数据帧。问题中提供的示例将是一个数字列
186。
将被解析为一个数字。@abarretjo如果数据是数字,那么你的问题就有点荒谬,因为数字“以句点结束”是不合理的,除非你选择
data%%1==0
或类似的行。