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

时间:2015-10-23 05:12:33

标签: r dataframe

所以我在R中有这个数据框,我想通过Date d = new Date(ld.getMillisSinceEpoch()); 来绘制一列的术语。但首先我需要将相应的行变量与该列合并,如果我想要绘制的列的那一行有一个文本(其中一些行有两个词,一些有1个而其他没有)。例如,举例来说:

info <- table(df$ForPlot)

我需要一种功能或实用的方法来实现这一目标:

ID    Name     ForPlot
1     cool    
2     nice     ready soft
3     fast      
4     slow     party 
5     good     low
6     bad      
7     true     yo fit
8     false

所以,只有我的&#34; ForPlot&#34;列有一个字符串,对应的行来自&#34; Name&#34;列应该被合并提取。有什么想法吗?

UPDATE 所以我认为我是新手如何通过信息&lt; - table(df $ ForPlot)绘制频率,我认为这些频率可以取得ForPlot中所有不同文本的频率,然后运行一个条形图。我错了。相反,它将每行的整个字符串(多个单词)作为频率计数。关于如何从具有多个值的列创建条形图的任何想法?

3 个答案:

答案 0 :(得分:1)

这是一种方式:

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

答案 1 :(得分:1)

您可以使用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     

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

答案 2 :(得分:1)

我们可以使用data.table。我们转换了&#39; data.frame&#39;到&#39; data.table&#39; (setDT(df1'),使用&#39; i&#39;中的逻辑条件(ForPlot!=''),我们通过paste&#39;分配&#39; ForPlot&#39;名称&#39;和&#39; ForPlot&#39;列。这应该非常快,因为我们正在分配。

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                

更新

如果我们需要转换后字频率的条形图,我们可以split&#39; ForPlot&#39;按空格列(strsplit),unlist输出list,使用table获取频率,然后使用barplot进行绘制。

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