带有特殊字符的整洁数据框
Tidy dataframes with special characters
我的csv格式数据集(可用here)如下:
我尝试使用以下文档将数据导入 R:
library(tidyverse)
data <- read_csv("<Path to file>\Sample.csv")
当我尝试使用 data$
提取列时,出现错误:
Error in gsub(reStrip, "", completions, perl = TRUE) :
input string 4 is invalid UTF-8
我的数据的 D 列包含数字和特殊字符 * 以及 Pilcrow 符号。此列最后一行中的数字是 66.1,但后跟 #。同样,第一列包含 * 和 Pilcrow 符号。
我想清理数据,以便将 D 列和 I 列中带有 * 和 Pilcrow 符号的行替换为 NA。另外,“66.1#”转换为“66.1”。
我想要的table如下:
我想知道如何将 csv 文件导入 R 并将其清理为 R 中所需的格式。最好使用 tidyverse。
这是一个简单的解决方案。
Read-in 文件为 .txt 文件:
编辑 1:
由于数据在某些单元格中包含井号标签 #,因此您需要包含参数 comment.char=""
以便 R 显示其后的数据(但仍将其视为评论的开始):
df <- read.table("[Your path]/Sample.txt",
header = T, fill = T, quote="", sep="\t", comment.char="")
与其他人一样,我发现您的专栏 headers 非常不切实际,并冒昧地将它们更改为字母表的前 11 个字母(仅出于视觉原因;您将有理由保留您的 headers):
colnames(df) <- LETTERS[1:11]
df
A B C D E F G H I J K
1 Adams County, Nebraska(6,10) 31001 *** 62.1 51.4 74.6 25 stable -5.2 -32.3 32.8
2 Adams County, North Dakota(6,10) 38001 *** * * * 3 or fewer * * * *
3 Aiken County, South Carolina(6,10) 45003 *** 55.9 51.5 60.6 124 stable -2.3 -8.8 4.6
4 Aitkin County, Minnesota(6) 27001 *** ¶ ¶ ¶ ¶ ¶ ¶ ¶ ¶
5 Albemarle County, Virginia(6,10) 51003 *** 49.4 44.1 55.3 64 stable -2.9 -18.1 15.2
6 Alcona County, Michigan(6,10) 26001 *** 66.1 # 51.2 86.7 17 stable -3.6 -26.5 26.3
所需的转换可以通过多种方式完成;一种简单的方法是(分别转换两列):
df[,4] <- gsub("\*|¶", NA, df[,4])
df[,9] <- gsub("\*|¶", NA, df[,9])
稍微复杂但更经济的方法是这样(一次性转换两列):
df[,c(4,9)] <- lapply(df[,c(4,9)], function(x) gsub("\*|¶", NA, x))
编辑 2:
如果您想摆脱数据中的主题标签,这将针对列 D
:
df[,4] <- gsub(" #", "", df[,4])
如果你想去掉一系列列中的 #,子集 df
在该范围内并使用 lapply
:
df[,c([range])] <- lapply(df[,c([range])], function(x) gsub(" #", "", x))
输出是这样的:
df
A B C D E F G H I J K
1 Adams County, Nebraska(6,10) 31001 *** 62.1 51.4 74.6 25 stable -5.2 -32.3 32.8
2 Adams County, North Dakota(6,10) 38001 *** <NA> * * 3 or fewer * <NA> * *
3 Aiken County, South Carolina(6,10) 45003 *** 55.9 51.5 60.6 124 stable -2.3 -8.8 4.6
4 Aitkin County, Minnesota(6) 27001 *** <NA> ¶ ¶ ¶ ¶ <NA> ¶ ¶
5 Albemarle County, Virginia(6,10) 51003 *** 49.4 44.1 55.3 64 stable -2.9 -18.1 15.2
6 Alcona County, Michigan(6,10) 26001 *** 66.1 51.2 86.7 17 stable -3.6 -26.5 26.3
我的csv格式数据集(可用here)如下:
我尝试使用以下文档将数据导入 R:
library(tidyverse)
data <- read_csv("<Path to file>\Sample.csv")
当我尝试使用 data$
提取列时,出现错误:
Error in gsub(reStrip, "", completions, perl = TRUE) :
input string 4 is invalid UTF-8
我的数据的 D 列包含数字和特殊字符 * 以及 Pilcrow 符号。此列最后一行中的数字是 66.1,但后跟 #。同样,第一列包含 * 和 Pilcrow 符号。
我想清理数据,以便将 D 列和 I 列中带有 * 和 Pilcrow 符号的行替换为 NA。另外,“66.1#”转换为“66.1”。
我想要的table如下:
我想知道如何将 csv 文件导入 R 并将其清理为 R 中所需的格式。最好使用 tidyverse。
这是一个简单的解决方案。
Read-in 文件为 .txt 文件:
编辑 1:
由于数据在某些单元格中包含井号标签 #,因此您需要包含参数 comment.char=""
以便 R 显示其后的数据(但仍将其视为评论的开始):
df <- read.table("[Your path]/Sample.txt",
header = T, fill = T, quote="", sep="\t", comment.char="")
与其他人一样,我发现您的专栏 headers 非常不切实际,并冒昧地将它们更改为字母表的前 11 个字母(仅出于视觉原因;您将有理由保留您的 headers):
colnames(df) <- LETTERS[1:11]
df
A B C D E F G H I J K
1 Adams County, Nebraska(6,10) 31001 *** 62.1 51.4 74.6 25 stable -5.2 -32.3 32.8
2 Adams County, North Dakota(6,10) 38001 *** * * * 3 or fewer * * * *
3 Aiken County, South Carolina(6,10) 45003 *** 55.9 51.5 60.6 124 stable -2.3 -8.8 4.6
4 Aitkin County, Minnesota(6) 27001 *** ¶ ¶ ¶ ¶ ¶ ¶ ¶ ¶
5 Albemarle County, Virginia(6,10) 51003 *** 49.4 44.1 55.3 64 stable -2.9 -18.1 15.2
6 Alcona County, Michigan(6,10) 26001 *** 66.1 # 51.2 86.7 17 stable -3.6 -26.5 26.3
所需的转换可以通过多种方式完成;一种简单的方法是(分别转换两列):
df[,4] <- gsub("\*|¶", NA, df[,4])
df[,9] <- gsub("\*|¶", NA, df[,9])
稍微复杂但更经济的方法是这样(一次性转换两列):
df[,c(4,9)] <- lapply(df[,c(4,9)], function(x) gsub("\*|¶", NA, x))
编辑 2:
如果您想摆脱数据中的主题标签,这将针对列 D
:
df[,4] <- gsub(" #", "", df[,4])
如果你想去掉一系列列中的 #,子集 df
在该范围内并使用 lapply
:
df[,c([range])] <- lapply(df[,c([range])], function(x) gsub(" #", "", x))
输出是这样的:
df
A B C D E F G H I J K
1 Adams County, Nebraska(6,10) 31001 *** 62.1 51.4 74.6 25 stable -5.2 -32.3 32.8
2 Adams County, North Dakota(6,10) 38001 *** <NA> * * 3 or fewer * <NA> * *
3 Aiken County, South Carolina(6,10) 45003 *** 55.9 51.5 60.6 124 stable -2.3 -8.8 4.6
4 Aitkin County, Minnesota(6) 27001 *** <NA> ¶ ¶ ¶ ¶ <NA> ¶ ¶
5 Albemarle County, Virginia(6,10) 51003 *** 49.4 44.1 55.3 64 stable -2.9 -18.1 15.2
6 Alcona County, Michigan(6,10) 26001 *** 66.1 51.2 86.7 17 stable -3.6 -26.5 26.3