使用间隔集将数据帧转换为离散值集

时间:2018-07-17 20:28:00

标签: r

我有一个数据集,其中每个记录都有一个间隔,我想拥有相同的信息,但是要作为该间隔内的一组离散值。

示例: 输入数据帧

  start end val
1     2   4   a
2     2   5   b
3     1   3   c

输出数据帧

  time val
1    2   a
2    3   a
3    4   a
4    2   b
5    3   b
6    4   b
7    5   b
8    1   c
9    2   c
10   3   c

完成这种转换的好方法是什么?此外,val列可以是多个列,以相同的模式重复。

2 个答案:

答案 0 :(得分:2)

这是一种方法:

dd = read.table(text = "start end val
1     2   4   a
2     2   5   b
3     1   3   c", header = TRUE)

使用此示例数据:

$http({
    header: 'content-type:application/json',
    method:'GET',
    url: 'https://us-central1-****-*****.cloudfunctions.net/**/GetAll****',
  }).then(function(messages){
    $scope.member = messages.data.****
  })

答案 1 :(得分:1)

这是一个data.table解决方案

library(data.table)
setDT(df)[, .(time = seq(start, end)), by = val][]
#    val time
# 1:   a    2
# 2:   a    3
# 3:   a    4
# 4:   b    2
# 5:   b    3
# 6:   b    4
# 7:   b    5
# 8:   c    1
# 9:   c    2
#10:   c    3

数据

df <- structure(list(start = c(2L, 2L, 1L), end = c(4L, 5L, 3L), val = c("a", 
"b", "c")), .Names = c("start", "end", "val"), class = "data.frame", row.names = c("1", 
"2", "3"))