繁体   English   中英

如何删除数据帧中某个元素中的某个字符串?

[英]How to remove a certain string in an element in a data frame?

DF <- structure(list(`2005` = c(NA, NA, NA, "30, NA", "18", NA), `2006` = c(NA_character_, 
NA_character_, NA_character_, NA_character_, NA_character_, NA_character_
), `2007` = c("15", NA, "18", NA, "30, 18, NA", NA), `2008` = c("16", 
NA, NA, "30, 27, NA", "18, 30, NA", NA), `2009` = c("15", NA, 
NA, "20, NA", "30, 18, NA", NA), `2010` = c(NA, NA, NA, "30, NA, 20", 
NA, NA), `2011` = c(NA_character_, NA_character_, NA_character_, 
NA_character_, NA_character_, NA_character_), `2012` = c(NA, 
NA, NA, "20, 30", NA, "26"), `2013` = c("15", NA, "19", NA, NA, 
NA), `2014` = c(NA, NA, "18", NA, NA, NA), `2015` = c(NA, NA, 
"18", NA, "18, NA", NA), `2016` = c(NA_character_, NA_character_, 
NA_character_, NA_character_, NA_character_, NA_character_)), .Names = c("2005", 
"2006", "2007", "2008", "2009", "2010", "2011", "2012", "2013", 
"2014", "2015", "2016"), row.names = c(NA, 6L), class = "data.frame")

给定上述数据帧,某些元素包含向量"30, NA, 20""18, 30, NA" 我希望R从带有数字的字符串中删除这些NA值,因此它仅分别输出"30, 20""18, 30"

我尝试使用gsub其他功能,但是它似乎不能很好地工作,并且我在搜索时发现的大多数问题都不适用于我的情况。

DF[] <- lapply(DF, function(x) gsub(', NA', '', x))

@ Dave2e提供了更通用的解决方案,该解决方案适用于以NA开头的字符串:

DF[] <- lapply(DF, function(x) gsub("[ ,]{0,3}NA", "", x))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM