首先,我在我职业生涯的大部分时间里使用base-r后学习使用dplyr(不是真正的数据分析师,而是试图学习)。我不知道dplyr是否是最佳选择,或者我是否应该使用别的东西。
我有一个非常混乱的设备生成的数据文件。在数据中嵌入标题/墓碑数据(该位置的数据行之间的特定位置的时间/日期/位置/传感器数据)。文件相对较大(150,000个观测值x 14个变量),我已成功使用dplyr将实际数据与墓碑数据分开(墓碑数据有14行信息分布在14列)。
我正在尝试创建单行的逻辑删除信息以附加到实际测量值,以便在R中可以轻松读取以进行分析,而无需依赖制造商的“黑盒”解决方案。
数据文件的示例和我的脚本如下:
# Read csv file of data into R
data <- read_csv("data.csv", col_names = FALSE)
data
# A tibble: 155,538 x 14
X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14
<dbl> <chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 NA 80.00 19.00 0.00 37.0 1.0 0.0 3.00 NA NA NA NA NA NA
2 1.4e+01 8.00 6.00 13.00 43.0 9.0 33.0 50.00 1.00 -1.60 -2.00 50.10 14.88 NA
3 5.9e-01 5.15 2.02 -0.57 0.0 0.0 0.0 0.00 24.58 28.02 25.64 25.37 NA NA
4 0.0e+00 0.00 0.00 0.00 0.0 NA NA NA NA NA NA NA NA NA
5 3.0e+04 30000.00 -32768.00 -32768.00 0.0 NA NA NA NA NA NA NA NA NA
6 0.0e+00 0.00 0.00 0.00 0.0 0.0 0.0 0.25 20.30 NA NA NA NA NA
7 3.7e+01 cm BT counts 1.0 0.1 NA NA NA NA NA NA NA NA
8 NA 0.25 13.30 145.46 7.5 -11.0 2.1 0.80 157.00 149.00 158.00 143.00 100.00 2147483647
9 NA 0.35 13.37 144.54 7.8 -10.9 2.4 -0.40 153.00 150.00 148.00 146.00 100.00 2147483647
10 NA 0.45 14.49 144.65 8.4 -11.8 1.8 -0.90 139.00 156.00 151.00 152.00 100.00 2147483647
# ... with 155,528 more rows
# Get header information from file and create index(ens) of header information to later append header data to each line of measured data
header <- data %>%
filter(!is.na(data[,1])) %>%
mutate_all(as.character) %>%
mutate(ens = rep(1:(nrow(header)/6), each = 6)) %>%
group_by(ens)
n.head <- bind_cols(header[header$ens == 1,][1,], header[header$ens == 1,][2,], header[header$ens == 1,][3,], header[header$ens == 1,][4,], header[header$ens == 1,][5,], header[header$ens == 1,][6,])
行2:7有我正在尝试使用的信息,我知道创建一行90多个变量并不理想,但这是清理这些数据的第一步,以便我可以使用它。
最后一行n.head
是我希望最终得到的,而不需要写一个循环来运行~2,000次...任何帮助将不胜感激,感谢您提前输入!
答案 0 :(得分:2)
这里的技巧是使用Thread one = new Thread() {
public void run() {
while (true) {
for (int m = listlen - 1; m >= 1; m--) {
flag = 0;
for (int n = 0; n < m; n++) {
try {
Thread.sleep(100);
} catch (InterruptedException ex) {
}
if (a[n + 1] < a[n]) {
temp = a[n + 1];
repaint();
a[n + 1] = a[n];
repaint();
a[n] = temp;
repaint();
flag = 1;
}
}
if (flag == 0) {
m = 0;
}
}
}
}
};
one.start();
和tidy::spread()
将标题列展开到单行数据框中。
tibble::enframe