Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R根据数据帧中的存在情况创建变量_R_Count_Word - Fatal编程技术网

R根据数据帧中的存在情况创建变量

R根据数据帧中的存在情况创建变量,r,count,word,R,Count,Word,对R来说是新的,并且一直在努力解决这个问题。我想创建一个新列,检查“text”列中是否存在一组单词(“foo”、“x”、“y”),然后将该值写入新列 我有一个看起来像这样的数据框:a-> id text time username 1 "hello x" 10 "me" 2 "foo and y" 5 "you" 3 "nothing" 15 "everyone" 4 "x,y,fo

对R来说是新的,并且一直在努力解决这个问题。我想创建一个新列,检查“text”列中是否存在一组单词(“foo”、“x”、“y”),然后将该值写入新列

我有一个看起来像这样的数据框:a->

 id     text        time   username
 1     "hello x"     10     "me"
 2     "foo and y"   5      "you"
 3     "nothing"     15     "everyone"
 4     "x,y,foo"     0      "know"
正确的输出应为:

a2->


任何关于如何做到这一点的提示都将不胜感激

另一个想法是可怕的循环。。。如果你预先分配的话,也许不会那么糟糕吧

options(stringsAsFactors=F)
df1 <- data.frame(text = c("hello x", "foo and y", "nothing", "x,y,foo"))
newcol <- rep(NA, nrow(df1))
for(i in 1:nrow(df1))
  newcol[i] <- paste( unlist(strsplit(df1$text[i], " "))[ grep("foo|x|y", unlist(strsplit(df1$text[i], " ")))], collapse=", ")
选项(stringsAsFactors=F)

df1这是使用
apply
sapply
的另一种方法:

df1 <- data.frame(text = c("hello x", "foo and y", "nothing", "x,y,foo"))
terms <- c('foo', 'x', 'y')
df1$keywordtag <- apply(sapply(terms, grepl, df1$text), 1, function(x) paste(terms[x], collapse=','))
df1
#        text keywordtag
# 1   hello x          x
# 2 foo and y      foo,y
# 3   nothing           
# 4   x,y,foo    foo,x,y
这是df1吗?
df1 <- data.frame(text = c("hello x", "foo and y", "nothing", "x,y,foo"))
terms <- c('foo', 'x', 'y')
df1$keywordtag <- apply(sapply(terms, grepl, df1$text), 1, function(x) paste(terms[x], collapse=','))
df1
#        text keywordtag
# 1   hello x          x
# 2 foo and y      foo,y
# 3   nothing           
# 4   x,y,foo    foo,x,y