【发布时间】:2021-09-26 14:29:27
【问题描述】:
我有一个非常复杂的数据框,当组织成一个数据框时看起来像这样:
HEADER
<chr>
13:30:00.587: <- $GPGGA,183000.30,4415.6243,N,08823.9769,W,1,7,1.7,225.5,M,-33.4,M,,*68
13:30:00.683: <- $GPGLL,4415.6243,N,08823.9769,W,183000.40,A,A*72
13:30:00.779: <- $GPVTG,159.6,T,163.2,M,0.1,N,0.1,K,A*2E
13:30:00.827: <- $HCHDG,74.8,0.0,E,3.6,W*6E
13:30:01.003: <- $WIMDA,29.9641,I,1.0147,B,26.5,C,,,48.2,,14.6,C,323.0,T,326.6,M,1.4,N,0.7,M*66
13:30:01.051: <- $WIMWV,248.4,R,1.1,N,A*29
13:30:01.114: <- $WIMWV,255.6,T,1.3,N,A*23
13:30:01.195: <- $YXXDR,A,-53.9,D,PTCH,A,-34.2,D,ROLL*57
13:30:01.307: <- $YXXDR,A,0.571,G,XACC,A,0.783,G,YACC,A,-0.181,G,ZACC*57
13:30:01.578: <- $GPGGA,183001.30,4415.6242,N,08823.9769,W,1,7,1.7,225.9,M,-33.4,M,,*64
我需要对它进行组织,以便我能够按照开头的 5 个字母字符串进行分组,例如 GPGGA,我已经使用此代码设法做到了:
df <- data.frame(Weather_data)
df_GPGGA <- df %>%
mutate("Entry" = gsub(".*\\$([A-Z]+),.*", "\\1", HEADER)) %>%
group_by("Entry") %>%
filter(Entry == "GPGGA")
因为这会输出一个 2 列 df,其中所有数据都在一个长字符串中,就像上面一样,作为列“HEADER”,现在是一个不错的标题,以及按确切的 5- 分组的第二列“Entry”特定行中的字母字符串(参见下面的屏幕截图)。
我的最终目标是能够为每个单独的数据集制作一个 .csv(由 5 个字母字符串分隔,因此我使用了过滤器;我为每个不同的 5 个字母字符串重复了此代码。输出对于每一行 GPGGA 代码,我正在使用的仪器与 GPGLL 行的输出信息并不完全相同),每个逗号分隔的值都在其指定的列中。但我不知道如何从那里格式化每个文档。这是一次尝试的屏幕截图:.csv without data separated。如何将所有这些数据放入单独的列中?
这是请求的可重现数据集:
dput(Weather_data) 输出this image
【问题讨论】:
-
您好!请通过在您的帖子中粘贴
dput(Weather_data)的输出来提供可重现的数据集。谢谢! -
顺便说一句:在
group_by(.)之后缺少%>%,你的filter应该有==而不是=。 -
我添加了 dput(Weather_data) 输出并更正了我的代码错误;我错过了他们将文本复制过来,它们在我的原始代码中。
-
使用
dpit(x)的全部意义在于我们可以复制文本以获得明确的数据样本。它的图像不是很有用。话虽如此,它与我在答案中包含的疑问输出有什么不同吗?我的回答有帮助吗?