R 通过搜索字符串在特定列的行中循环

R 通过搜索字符串在特定列的行中循环,r,string,if-statement,dataframe,R,String,If Statement,Dataframe,我从txt文件导入了一些数据: df <- read.table(file.choose(), sep = "\t", skip = 2, fill = T) df <- cdf[,c(6,11)] colnames(df) <- c("area", "population") 这是在一个d

我从txt文件导入了一些数据:

df <- read.table(file.choose(), 
                               sep = "\t",
                               skip = 2,
                               fill = T)
df <- cdf[,c(6,11)]
colnames(df) <- c("area", "population")
这是在一个
data.frame
类中,我想循环查看
状态
,看看它是否包含短语
区域0
。如果有,我想在同一行上转到
population
,并通过累积和将总体相加。我的最终结果应该是这样的:
area0 57425
在一个新的数据框架中

正如Ronak Shah在评论中所说的,这个问题可以通过
sum(以数字形式)(以字符形式)(df$population‌​[grepl(“区域0”‌‌​​, df$state])),na.rm=T)

这避免了对for循环的需要

第二件应该实现的事情是去掉
population
列中的逗号,以便正确计算总和。这可以使用
gsub
完成:

df$population <- gsub(",", "", df$population)

df$population理想情况下,这将有效
sum(as.numeric(as.character)(df$population[grepl(“华盛顿”,df$state)]),na.rm=T)
但是
Population
列中存在一些问题。它已被读取为字符。因此,您首先需要使用
gsub
删除所有逗号。例如,
59859
应更改为
59859
,然后使用上述代码。然后它会做什么?您是否将值分配回该列?
customerStateAndPopOE$population@Ronaksah Ok是的。我没有重新赋值。现在
gsub
工作,逗号被删除。当我执行
sum()时
code我在控制台中得到了这个错误:
df$population中的错误:“closure”类型的对象不可子集
EDIT:我不知道为什么我会得到这个错误。我没有用我的数据帧的名称替换
df
。谢谢你的帮助,我只是在学习R。你不需要
在这里进行
循环。Af替换逗号后,需要执行
sum(as.numeric)(as.character)(customerStateAndPopOE$population[grepl(“华盛顿”)操作‌​, customerstate和popoe$state])),na.rm=T)
检查括号。
na.rm
应该在最外面的括号中,至少在gif中看起来不一样。之前的括号看起来没有正确对齐。我看到了你的感谢,但是,因为在你删除了其他问题之后我才开始讨论,所以我错过了“我会按照你的回答…”之后的所有内容,如果有任何问题。PS忘记提及如果您删除这些问题,您将找回丢失的代表。PPS还忘记建议您接受此答案(通过单击灰色/空白勾选)这样其他人就可以知道问题已经解决了。哎呀!不要忘记2天的延迟。还要注意,现在你是15+代表,你可以对任何问题/答案进行投票。
df$population <- gsub(",", "", df$population)