如果数据帧中指定列的行在R中有字符串变量,如何提取和合并该列的相应行变量?

如果数据帧中指定列的行在R中有字符串变量,如何提取和合并该列的相应行变量?,r,dataframe,R,Dataframe,因此,我有一个数据框,在R中,我想通过info对一列的术语进行条形图,这里有一种方法: i <- df$ForPlot != '' df$ForPlot[i] <- paste(df$Name[i], df$ForPlot[i]) i您可以使用ifelse df$ForPlot <- ifelse(df$ForPlot != "", paste(df$Name, df$ForPlot), " ") > df #Name ForPlot #1 Cool

因此,我有一个数据框,在R中,我想通过
info对一列的术语进行条形图,这里有一种方法:

i <- df$ForPlot != ''
df$ForPlot[i] <- paste(df$Name[i], df$ForPlot[i])

i您可以使用
ifelse

df$ForPlot <- ifelse(df$ForPlot != "", paste(df$Name, df$ForPlot), " ")

> df
#Name         ForPlot
#1  Cool                
#2  nice nice ready soft
#3  fast                
#4  slow      slow party
#5  good        good low
#6   bad                
#7  true     true yo fit
#8 false     
df$ForPlot df
#绘图名称
#1酷
#2好的,好的,软的
#3快
#4慢派对
#5好-好-低
#6糟糕
#7真正的溜溜球
#8错误

编辑:根据@Robert Dove的评论更新了答案

我们可以使用
数据。表
。我们将'data.frame'转换为'data.table'(
setDT(df1')
),使用'i'中的逻辑条件(
ForPlot!='
),我们通过粘贴
ing'Name'和'ForPlot'列来分配'ForPlot'。这应该是非常快的,因为我们正在进行分配

library(data.table)
setDT(df1)[ForPlot!='', ForPlot:= paste(Name, ForPlot)]  
df1
#   ID  Name         ForPlot
#1:  1  cool                
#2:  2  nice nice ready soft
#3:  3  fast                
#4:  4  slow      slow party
#5:  5  good        good low
#6:  6   bad                
#7:  7  true     true yo fit
#8:  8 false                
更新 如果转换后需要词频的条形图,我们可以
按空格(
strsplit
)拆分“ForPlot”列,
取消列出输出的
列表
,使用
获得频率,然后使用
条形图
进行打印

 barplot(table(unlist(strsplit(df1$ForPlot, ' '))))

谢谢,但请注意,
df$ForPlot I更新了帖子,检查这是否是您想要的。如果频率计数较低,您将如何通过设置频率计数的刻度限制200来更改维度?@RobertDove Try
tbl 200])
您的更新答案有效,但您的回复答案生成了一个没有文本的灰色块。@RobertDove您可以尝试使用
strsplit(as.character(df1$ForPlot),“”)
library(data.table)
setDT(df1)[ForPlot!='', ForPlot:= paste(Name, ForPlot)]  
df1
#   ID  Name         ForPlot
#1:  1  cool                
#2:  2  nice nice ready soft
#3:  3  fast                
#4:  4  slow      slow party
#5:  5  good        good low
#6:  6   bad                
#7:  7  true     true yo fit
#8:  8 false                
 barplot(table(unlist(strsplit(df1$ForPlot, ' '))))