R基于另一个数据帧x获得数据子集

时间:2018-01-08 13:23:47

标签: r csv split

我有两个数据框:

 ch1 <- read.csv(file, header=TRUE, sep=";", skip=7)
 ch2 <- read.csv(file2, header=TRUE, sep=";", skip=7)

第二帧的值介于0和3之间,X轴对应于第一帧(其时间)上的值。

我想只得到ch1的值,其中ch2的x轴是&lt; 1.0 我希望在单独的列表中使用这些值(矩阵首选)

示例频道2数据:

Relative time;Data collector12
s;V
2.2079991;0.011083123
2.2079992;0.028211586
2.2079993;-0.0020151134
2.2079994;0.001511335
2.2079995;0.016120907
2.2079996;3.025188917

示例频道1数据:

Relative time;Data collector1
s;V
2.2079992;-0.0109
2.2079993;-0.0133
2.2079994;-0.01055
2.2079995;-0.0071999999
2.2079996;-0.0043500001

在这种情况下,我想要除了最后一个以外的所有值。

我不知道从哪里开始,谢谢

1 个答案:

答案 0 :(得分:0)

以下是您可以使用的内容:

library(data.table)
# c1 <- fread("filename.csv") #Reading from .csv file
# c2 <- fread("filtename.csv") #Reading from .csv file

c1 <- data.table(relative_time = c(2.2079991, 2.2079992, 2.2079993, 2.2079994, 2.2079995, 2.2079996),
                 voltage = c(0.011083123, 0.028211586, -0.0020151134, 0.001511335, 0.016120907, 3.025188917))

c2 <- data.table(relative_time = c(2.2079992, 2.2079993, 2.2079994, 2.2079995, 2.2079996),
                 voltage = c(-0.0109, -0.0133, -0.01055, -0.0071999999, -0.0043500001))

dat <- merge(c1, c2, by = "relative_time", all = T, suffixes = c("_ch1", "_ch2"))

<强>输出

> dat
   relative_time  voltage_ch1 voltage_ch2
1:      2.207999  0.011083123          NA
2:      2.207999  0.028211586    -0.01090
3:      2.207999 -0.002015113    -0.01330
4:      2.207999  0.001511335    -0.01055
5:      2.208000  0.016120907    -0.00720
6:      2.208000  3.025188917    -0.00435

> dat[voltage_ch2 <0, ]
   relative_time  voltage_ch1 voltage_ch2
1:      2.207999  0.028211586    -0.01090
2:      2.207999 -0.002015113    -0.01330
3:      2.207999  0.001511335    -0.01055
4:      2.208000  0.016120907    -0.00720
5:      2.208000  3.025188917    -0.00435

我使用了data.table,但没有必要 - data.frame应该给出相同的结果。我以为我会添加它,因为我发现在大型数据集上使用非常方便,可能需要更复杂的操作。 by功能特别有用。