从 data.frame 中删除具有特定符号的行
Delete rows with specific symbol from data.frame
我正在清理我的数据,这里是我的一个 data.frames 列 V1
:
的示例
V1
#title 8132
river Rhine
#rows 1231
#ID 11
#format csv
YYYY-MM-DD;hh:mm; Original; tested; Flag
1926-10-01;--:--; 106.400; 106.400; -999
1926-10-02;--:--; 84.560; 84.560; -999
1926-10-03;--:--; 72.800; 72.800; -999
1926-10-04;--:--; 65.800; 65.800; -999
1926-10-05;--:--; 72.800; 72.800; -999
1926-10-06;--:--; 72.800; 72.800; -999
1926-10-07;--:--; 92.960; 92.960; -999
1926-10-08;--:--; 126.000; 126.000; -999
1926-10-09;--:--; 153.720; 153.720; -999
1926-10-10;--:--; 136.920; 136.920; -999
我只需要删除带有“#”的所有行(即 1、3、4、5)以及包含在带有“#”的行(即 2)之间的任何不带“#”的行。
这是我的预期输出:
YYYY-MM-DD;hh:mm; Original; tested; Flag
1926-10-01;--:--; 106.400; 106.400; -999
1926-10-02;--:--; 84.560; 84.560; -999
1926-10-03;--:--; 72.800; 72.800; -999
1926-10-04;--:--; 65.800; 65.800; -999
1926-10-05;--:--; 72.800; 72.800; -999
1926-10-06;--:--; 72.800; 72.800; -999
1926-10-07;--:--; 92.960; 92.960; -999
1926-10-08;--:--; 126.000; 126.000; -999
1926-10-09;--:--; 153.720; 153.720; -999
1926-10-10;--:--; 136.920; 136.920; -999
我试过了:
df = df[!df$V1 == '#']
和
df = df[-grep("#", df$V1),]
和
df_sub = subset(df, V1 != '#')
但它不起作用。
请帮忙,谢谢。
好的,这就是我所做的:
#read csv file, add 5 columns and convert blank spaces to NAs
df = read.csv('file.csv', header = FALSE, sep = ';', col.names = c('V1', 'V2', 'V3', 'V4', 'V5'), na.strings = '')
#then remove rows which contain NAs
df = df[complete.cases(df),]
希望您会发现它有用,如果我无法重现一个好的 data.frame 示例,我们深表歉意。
我正在清理我的数据,这里是我的一个 data.frames 列 V1
:
V1
#title 8132
river Rhine
#rows 1231
#ID 11
#format csv
YYYY-MM-DD;hh:mm; Original; tested; Flag
1926-10-01;--:--; 106.400; 106.400; -999
1926-10-02;--:--; 84.560; 84.560; -999
1926-10-03;--:--; 72.800; 72.800; -999
1926-10-04;--:--; 65.800; 65.800; -999
1926-10-05;--:--; 72.800; 72.800; -999
1926-10-06;--:--; 72.800; 72.800; -999
1926-10-07;--:--; 92.960; 92.960; -999
1926-10-08;--:--; 126.000; 126.000; -999
1926-10-09;--:--; 153.720; 153.720; -999
1926-10-10;--:--; 136.920; 136.920; -999
我只需要删除带有“#”的所有行(即 1、3、4、5)以及包含在带有“#”的行(即 2)之间的任何不带“#”的行。
这是我的预期输出:
YYYY-MM-DD;hh:mm; Original; tested; Flag
1926-10-01;--:--; 106.400; 106.400; -999
1926-10-02;--:--; 84.560; 84.560; -999
1926-10-03;--:--; 72.800; 72.800; -999
1926-10-04;--:--; 65.800; 65.800; -999
1926-10-05;--:--; 72.800; 72.800; -999
1926-10-06;--:--; 72.800; 72.800; -999
1926-10-07;--:--; 92.960; 92.960; -999
1926-10-08;--:--; 126.000; 126.000; -999
1926-10-09;--:--; 153.720; 153.720; -999
1926-10-10;--:--; 136.920; 136.920; -999
我试过了:
df = df[!df$V1 == '#']
和
df = df[-grep("#", df$V1),]
和
df_sub = subset(df, V1 != '#')
但它不起作用。
请帮忙,谢谢。
好的,这就是我所做的:
#read csv file, add 5 columns and convert blank spaces to NAs
df = read.csv('file.csv', header = FALSE, sep = ';', col.names = c('V1', 'V2', 'V3', 'V4', 'V5'), na.strings = '')
#then remove rows which contain NAs
df = df[complete.cases(df),]
希望您会发现它有用,如果我无法重现一个好的 data.frame 示例,我们深表歉意。