R中混合类型的变量

variable of mixed types in R

更新

我使用以下命令从 CSV 文件导入了一个数据库:

data.CGS <- read.csv("filepath", sep=";", na.strings=c(""," ","NA"), stringsAsFactors =F)

CSV文件中的一列有不同类型的数据,数值、整数、百分比和字符串。

假设,为简单起见,此列具有以下元素 col=[1,2,1, c, 2%, 4%, 15.5, 16.5]

因此,在 R 中将读取此列,就好像创建此变量一样

col<-c("1","2", "c", "2%", "4%", "15.5", "16.5", "1980", "1/12/1950")

我的目的是根据 "truly" 数值数据做一些制表和计算一些统计数据,在这个例子中是除了字母 "c" 和日期之外的所有值,1980 年和 1/12/1950。

在 R 中执行此操作的最简单方法是什么?任何帮助将不胜感激。

当然,有一个非常简单的事情要做,那就是将所有元素强制为数字,但是在 R 中这意味着将所有字符转换为 NA - 我不喜欢。

你在问题中问了很多问题。你可以以此为例

 col<-data.frame(var = c("1","2", "c", "2%", "4%", "15.5", "16.5"))
col
library(dplyr)

通过 gsub 您从变量 var 中删除了 % 符号,在 filter 您从变量

中删除了一个 c
col %>% mutate(var1 = gsub("%", "", var)) %>% filter(var1 != "c") %>% summarise(m_n = mean(as.numeric(var1)))

       m_n
1 6.833333

一种方法是创建一个独立于任何文本字符的新矢量。

## Create new vector without any characters
col2 <- col[-grep("[a-zA-Z]", col)]

## To strip percentages (%)
strip_percents <- as.numeric(gsub("%", "", col2))

## All numbers except percentages
no_percents <- as.numeric(col2[-grep("%", col2)])

## Save strings in new vector
all_yo_strings <- col[grep("[a-zA-Z]", col)]

## Save percentages in a new vector
all_yo_percents <- col[grep("%", col)]
all_yo_percents <- as.numeric(gsub("%", "", all_yo_percents))/100

这对您有用吗?它会将您的文本字符串保留在原始 col 变量中(您只需从 col[-grep("[a-zA-Z]", col)] 中删除 - 即可访问该变量),同时为您提供一个新的数字向量。