使用r将向量中的相同元素组合在一起

时间:2018-03-19 12:49:54

标签: r

一个非常简单的问题,但无法找到答案。

我有一个字符向量(例如 - " a"" a"" a"" c"" c& #34;" c"" b"" b"" b")。

我想将这些元素组合在一起,以及#34; a" " C" " B"

是否有特定功能?

谢谢

3 个答案:

答案 0 :(得分:0)

您可以使用sqldf librayr并使用group by

require(sqldf)    

vector<- data.frame(v=c("a", "a", "a", "c", "c", "c", "b", "b", "b"))
sqldf("SELECT v from vector group by v")

答案 1 :(得分:-1)

你去吧

vector <- c("a", "a", "a", "c", "c", "c", "b", "b", "b")
sorted <- sort(vector)

答案 2 :(得分:-1)

如果您只想要独特元素,那么unique

> unique(c("a", "a", "a", "c", "c", "c", "b", "b", "b"), sort=TRUE)
[1] "a" "c" "b"

<强>更新

使用问题的新描述,这将是我的解决方案

shifted <- c(NA, vector[-length(vector)])
vector[is.na(shifted) | vector != shifted]

我将向量向右移动,将NA放在前面,因为我不知道放在那里的内容,然后选出不是NA且不相等的元素到前一个元素。

如果向量包含NA,则需要进行一些额外的检查。如何在不知道更多的情况下将不是第一个元素的东西放在移位矢量的第一个位置是不明显的。例如,您可以从向量中提取所有元素并选择一个不是第一个元素的元素,但如果向量仅包含相同的元素,则会失败。

现在的另一个问题是:是否有更智能的方法来实施shift操作?我想不出一个,但可能有更规范的解决方案。