R语言:如何统计行长度并筛选不符合指定格式的DataFrame行?
问题解答
1. 统计行长度相关命令
在R中:
- 统计数据框的总行数,用
nrow()函数,比如nrow(df)会返回数据框df的行数。 - 统计每行中字符串的字符长度,可以用base R的
nchar()或stringr包的str_length(),结合apply遍历每行:# Base R实现:统计date1、date2列每行的字符长度 apply(df[, c("date1", "date2")], 1, function(x) nchar(x)) # stringr包实现 library(stringr) apply(df[, c("date1", "date2")], 1, function(x) str_length(x))
2. 筛选不符合指定格式的行
通过判断date1或date2的字符长度是否不等于17,即可筛选出目标行,提供两种实现方式:
方式一:Base R
# 筛选date1或date2长度不为17的行 new_df <- df[which(nchar(df$date1) != 17 | nchar(df$date2) != 17), ]
方式二:dplyr+stringr(更简洁)
先安装并加载依赖包:
install.packages(c("dplyr", "stringr")) library(dplyr) library(stringr)
再执行筛选:
new_df <- df %>% filter(str_length(date1) != 17 | str_length(date2) != 17)
运行后得到的new_df即为预期结果:
> new_df id date1 date2 1 1 2014-Dec 2018 Feb 2016-Dec 2018 2 2 2009-2010 2014-Dec 2018
内容的提问来源于stack exchange,提问作者Erik Brole
相关产品推荐
相关产品推荐

