所以我在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中所有不同文本的频率,然后运行一个条形图。我错了。相反,它将每行的整个字符串(多个单词)作为频率计数。关于如何从具有多个值的列创建条形图的任何想法?
答案 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, ' '))))