R如何从一组相同的数据点中获取一个数据点

R如何从一组相同的数据点中获取一个数据点,r,R,首先,我对R不熟悉,所以我不完全熟悉该语言的语法-- 我有一个数据列表,例如,我们可以这样说: 1,1,1,1,1,2,2,3,3,2,2,3,3,4,4,4,4,4,5,5,6,6,6,5,7,7,7,7 我要做的是创建一个新列表,每组相同数据只包含一个条目,因此: 1,2,3,2,3,4,5,6,5,6,5,7(大约) 我不太清楚该怎么办。请注意,值可能不是整数。此外,如果有人对使用字符串或时间戳做同样的事情有任何想法,建议将不胜感激! 到目前为止,我正试图从索引的角度对它进行研究,但我很难

首先,我对R不熟悉,所以我不完全熟悉该语言的语法-- 我有一个数据列表,例如,我们可以这样说:

1,1,1,1,1,2,2,3,3,2,2,3,3,4,4,4,4,4,5,5,6,6,6,5,7,7,7,7

我要做的是创建一个新列表,每组相同数据只包含一个条目,因此:

1,2,3,2,3,4,5,6,5,6,5,7(大约)

我不太清楚该怎么办。请注意,值可能不是整数。此外,如果有人对使用字符串或时间戳做同样的事情有任何想法,建议将不胜感激!
到目前为止,我正试图从索引的角度对它进行研究,但我很难把它记下来。

看起来您需要函数rle。如果x是你的值向量,那么rle(x)$值将给出你想要的

values <- c(1,1,1,1,1,2,2,2,3,3,3,2,2,3,3,3,4,4,4,4,4,4,4,4,4,5,5,5,5,6,6,5,6,5,7,7,7,7)
rle(values)$values

## [1] 1 2 3 2 3 4 5 6 5 6 5 7

values <- as.character(values)
rle(values)$values

## [1] "1" "2" "3" "2" "3" "4" "5" "6" "5" "6" "5" "7"

ts <- Sys.time()
stamps <- sort(rep(c(ts, ts+1, ts+2, ts+3), 5))

##  [1] "2014-09-25 10:55:29 EDT" "2014-09-25 10:55:29 EDT" "2014-09-25 10:55:29 EDT"
##  [4] "2014-09-25 10:55:29 EDT" "2014-09-25 10:55:29 EDT" "2014-09-25 10:55:30 EDT"
##  [7] "2014-09-25 10:55:30 EDT" "2014-09-25 10:55:30 EDT" "2014-09-25 10:55:30 EDT"
## [10] "2014-09-25 10:55:30 EDT" "2014-09-25 10:55:31 EDT" "2014-09-25 10:55:31 EDT"
## [13] "2014-09-25 10:55:31 EDT" "2014-09-25 10:55:31 EDT" "2014-09-25 10:55:31 EDT"
## [16] "2014-09-25 10:55:32 EDT" "2014-09-25 10:55:32 EDT" "2014-09-25 10:55:32 EDT"
## [19] "2014-09-25 10:55:32 EDT" "2014-09-25 10:55:32 EDT"

as.POSIXct(rle(as.numeric(stamps))$values, origin = '1970-01-01')

## [1] "2014-09-25 10:55:29 EDT" "2014-09-25 10:55:30 EDT" "2014-09-25 10:55:31 EDT"
## [4] "2014-09-25 10:55:32 EDT"

values看起来您需要函数rle。如果x是你的值向量,那么rle(x)$值将给出你想要的

values <- c(1,1,1,1,1,2,2,2,3,3,3,2,2,3,3,3,4,4,4,4,4,4,4,4,4,5,5,5,5,6,6,5,6,5,7,7,7,7)
rle(values)$values

## [1] 1 2 3 2 3 4 5 6 5 6 5 7

values <- as.character(values)
rle(values)$values

## [1] "1" "2" "3" "2" "3" "4" "5" "6" "5" "6" "5" "7"

ts <- Sys.time()
stamps <- sort(rep(c(ts, ts+1, ts+2, ts+3), 5))

##  [1] "2014-09-25 10:55:29 EDT" "2014-09-25 10:55:29 EDT" "2014-09-25 10:55:29 EDT"
##  [4] "2014-09-25 10:55:29 EDT" "2014-09-25 10:55:29 EDT" "2014-09-25 10:55:30 EDT"
##  [7] "2014-09-25 10:55:30 EDT" "2014-09-25 10:55:30 EDT" "2014-09-25 10:55:30 EDT"
## [10] "2014-09-25 10:55:30 EDT" "2014-09-25 10:55:31 EDT" "2014-09-25 10:55:31 EDT"
## [13] "2014-09-25 10:55:31 EDT" "2014-09-25 10:55:31 EDT" "2014-09-25 10:55:31 EDT"
## [16] "2014-09-25 10:55:32 EDT" "2014-09-25 10:55:32 EDT" "2014-09-25 10:55:32 EDT"
## [19] "2014-09-25 10:55:32 EDT" "2014-09-25 10:55:32 EDT"

as.POSIXct(rle(as.numeric(stamps))$values, origin = '1970-01-01')

## [1] "2014-09-25 10:55:29 EDT" "2014-09-25 10:55:30 EDT" "2014-09-25 10:55:31 EDT"
## [4] "2014-09-25 10:55:32 EDT"

值如果您给出一个实际数据集的示例(请参见如何生成),它将有所帮助。如果除了显示的向量外,还有一个唯一表示每个组的变量,则可以使用
duplicated
轻松地按组删除重复项。因此,每个变量都是唯一的,但不是每个组。因此,所有样本数据点都是相同的变量。另外,我不知道如何使用复制的,因为我以后可能会有与之前相同的测量值,但也是不同的样本。这意味着特定值必须包含在新列表中。请使用准确的术语。我发现你的数据不太可能在列表中。它很可能是一个向量。还有,什么类型的运算符是
~=
?它不是R语言的一部分,也不是
skip
。如果您给出一个实际数据集的示例(请参见如何生成),它将有所帮助。如果除了显示的向量外,还有一个唯一表示每个组的变量,则可以使用
duplicated
轻松地按组删除重复项。因此,每个变量都是唯一的,但不是每个组。因此,所有样本数据点都是相同的变量。另外,我不知道如何使用复制的,因为我以后可能会有与之前相同的测量值,但也是不同的样本。这意味着特定值必须包含在新列表中。请使用准确的术语。我发现你的数据不太可能在列表中。它很可能是一个向量。还有,什么类型的运算符是
~=
?它不是R语言的一部分,也不是
skip
。嘿,这很漂亮!这是我最初寻找的,我将调整编辑原始帖子,以详细说明我正在尝试做的其他事情。Thanks@James,请小心,这样你的问题就不会成为移动的目标。嘿,这很漂亮!这是我最初寻找的,我将调整编辑原始帖子,以详细说明我正在尝试做的其他事情。Thanks@James,请小心,以免您的问题成为移动目标。