有关R

时间:2017-08-10 22:01:33

标签: r spotfire

我有下表

**A**  | **B**  | **C** |**D** | **E**|
:----: | :----: | :----:|:----:|:----:|
1/1/17 | 3/1/17 |4/1/17 | H    |0.4   |
1/1/17 | 3/1/17 |4/1/17 | H    |0.2   |
2/1/17 | 4/1/17 |5/1/17 | V    |0.6   |
3/1/17 | 5/1/17 |6/1/17 | V    |0.8   |
4/1/17 | 5/1/17 |7/1/17 | H    |0.6   |
4/1/17 | 6/1/17 |7/1/17 | H    |0.2   |

想法是使用Spotfire,如果不是那么R在soptfire中。不幸的是,我没有基本代码,因为我不确定如何将唯一日期中的单行数据与A,B和B中的整个日期列进行比较。 C和sum值构成另一列E.请从我可以从中提取唯一Date值的初始部分。不要认为它有用,但包含在这里。

library(reshape2) 
mydata<-melt(dates,id=c("D")) 
mydata$value<-ymd(mydata$value)

Looking for the result as in the table below using R code
 1. Column with Unique list of dates from columns A,B & C above
 2. Sum of Column E where Column A dates <= Unique Dates value for each 
    columns A,B&C from the above table.
 3. Only Sum filtered by column D value of 'H' only

OR 有没有办法在Spotfire中获取图表,其中唯一日期为X轴,Y轴为总和,而无需使用Spotfire中的R创建单独的表格。

结果

**Unique Dates**  | **Sum for A** |  **Sum for B** | ** Sum for C**|
    :----:        |     :----:    |     :----:     |     :----:    |
    1/1/17        |      0.6      |       0        |       0       |
    2/1/17        |      0.6      |       0        |       0       |
    3/1/17        |      0.6      |      0.6       |       0       |
    4/1/17        |      1.4      |      0.6       |       0.6     |
    5/1/17        |      1.4      |      1.2       |       0.6     |
    6/1/17        |      1.4      |      1.4       |       0.6     |
    7/1/17        |      1.4      |      1.4       |       1.4     |

实施例: 对于A列中3/1/2017的独特日期,它是0.4 + 0.2 = 0.6 这是与A的1/1相对应的值,仅在2/1/2017有&#34; V&#34;在D列中同样地,对于2/1/2017它仍然是0.6,因为H的唯一值被添加。

1 个答案:

答案 0 :(得分:0)

假设最后的Note中的数据试试这个。没有包使用。

nms <- names(DF)[1:3]
fo <- E ~ A + time

DFH <- subset(DF, D == "H")
r <- reshape(DFH, varying = list(nms), times = nms, dir = "long")
xtabs(fo, aggregate(fo, r, sum))

给出以下内容 - 请注意,问题中的输出似乎与问题中的输入不对应,因此以下内容必然不同:

A          A   B   C
  1/1/17 0.6 0.0 0.0
  2/1/17 0.0 0.0 0.0
  3/1/17 0.0 0.6 0.0
  4/1/17 0.8 0.0 0.6
  5/1/17 0.0 0.6 0.0
  6/1/17 0.0 0.2 0.0
  7/1/17 0.0 0.0 0.8

这也可以表示为magrittr管道,其中nmsfo如上所述:

library(magrittr)

DF %>%
   subset(D == "H") %>%
   reshape(varying = list(nms), times = nms, dir = "long") %>%
   { aggregate(fo, ., sum) } %>%
   xtabs(formula = fo)

注意:输入数据:

Lines <- "
A      | B      |   C   |D     | E
:----: | :----: | :----:|:----:|:----:
1/1/17 | 3/1/17 |4/1/17 | H    |0.4   
1/1/17 | 3/1/17 |4/1/17 | H    |0.2   
2/1/17 | 4/1/17 |5/1/17 | V    |0.6   
3/1/17 | 5/1/17 |6/1/17 | V    |0.8   
4/1/17 | 5/1/17 |7/1/17 | H    |0.6   
4/1/17 | 6/1/17 |7/1/17 | H    |0.2   "
DF <- read.table(text = Lines, header = TRUE, check.names = FALSE,
   comment.char = ":", sep = "|", strip.white = TRUE)