相关疑难解决方法(0)

如何在不丢失信息的情况下将因子转换为整数\数字?

当我将因子转换为数字或整数时,我得到基础级别代码,而不是值作为数字.

f <- factor(sample(runif(5), 20, replace = TRUE))
##  [1] 0.0248644019011408 0.0248644019011408 0.179684827337041 
##  [4] 0.0284090070053935 0.363644931698218  0.363644931698218 
##  [7] 0.179684827337041  0.249704354675487  0.249704354675487 
## [10] 0.0248644019011408 0.249704354675487  0.0284090070053935
## [13] 0.179684827337041  0.0248644019011408 0.179684827337041 
## [16] 0.363644931698218  0.249704354675487  0.363644931698218 
## [19] 0.179684827337041  0.0284090070053935
## 5 Levels: 0.0248644019011408 0.0284090070053935 ... 0.363644931698218

as.numeric(f)
##  [1] 1 1 3 2 5 5 3 4 4 1 4 2 3 1 3 5 4 5 3 2

as.integer(f)
##  [1] 1 1 3 2 5 …
Run Code Online (Sandbox Code Playgroud)

casting r r-faq

565
推荐指数
7
解决办法
82万
查看次数

Change the class from factor to numeric of many columns in a data frame

What is the quickest/best way to change a large number of columns to numeric from factor?

I used the following code but it appears to have re-ordered my data.

> head(stats[,1:2])
  rk                 team
1  1 Washington Capitals*
2  2     San Jose Sharks*
3  3  Chicago Blackhawks*
4  4     Phoenix Coyotes*
5  5   New Jersey Devils*
6  6   Vancouver Canucks*

for(i in c(1,3:ncol(stats))) {
    stats[,i] <- as.numeric(stats[,i])
}

> head(stats[,1:2])
  rk                 team
1  2 Washington Capitals*
2 13     San Jose Sharks* …
Run Code Online (Sandbox Code Playgroud)

r

76
推荐指数
7
解决办法
18万
查看次数

如何将相同的函数应用于data.table中的每个指定列

我有一个data.table,我希望在某些列上执行相同的操作.这些列的名称以字符向量给出.在这个特定的例子中,我想将所有这些列乘以-1.

一些玩具数据和指定相关列的向量:

library(data.table)
dt <- data.table(a = 1:3, b = 1:3, d = 1:3)
cols <- c("a", "b")
Run Code Online (Sandbox Code Playgroud)

现在我这样做,循环遍历字符向量:

for (col in 1:length(cols)) {
   dt[ , eval(parse(text = paste0(cols[col], ":=-1*", cols[col])))]
}
Run Code Online (Sandbox Code Playgroud)

有没有办法在没有for循环的情况下直接执行此操作?

r data.table

70
推荐指数
3
解决办法
4万
查看次数

转换dataframe列类型的函数

R通常以"错误"格式理解数据框列,或者您只需要将列类从因子更改为字符以进行修改.我以前用以下方式更改了列类:

set.seed(1)

df <- data.frame(x = 1:10,
y = rep(1:2, 5),
k = rnorm(10, 5,2),
z = rep(c(2010, 2012, 2011, 2010, 1999), 2),
j = c(rep(c("a", "b", "c"), 3), "d"))

x <- c("y", "z")

for(i in 1:length(x)){
df[,x[i]] <- factor(df[,x[i]])}
Run Code Online (Sandbox Code Playgroud)

并回到数字:

x <- 1:5

for(i in 1:length(x)){
df[,x[i]] <- as.numeric(as.character(df[,x[i]]))} # Character cannot become numeric
Run Code Online (Sandbox Code Playgroud)

在我看来,也许有更好的方法做到这一点.我发现了这个问题,这正是我所需要的:

convert.magic <- function(obj,types){
out <- lapply(1:length(obj),FUN = function(i){FUN1 <- 
switch(types[i],
character = as.character,
numeric = as.numeric,
factor = as.factor); FUN1(obj[,i])})
names(out) <- …
Run Code Online (Sandbox Code Playgroud)

r function type-conversion

4
推荐指数
1
解决办法
9191
查看次数

在data.frame上分配(不同)列类

我需要更改整个data.frame的列类。理想情况是寻找apply解决方案,但tidyverse也欢迎其他解决方案。

示例数据

set.seed(1)
d <- data.frame("numbers" = as.character(1:10),
                "letters" = letters[1:10],
                "boolean" = sample(c("T", "F"), 10, T),
                stringsAsFactors = F)
Run Code Online (Sandbox Code Playgroud)

我想制作第一列(numbersnumeric,第二列(letterscharacter和第三列(booleanlogical

r dplyr

3
推荐指数
1
解决办法
60
查看次数

R:根据值自动转换列类型

我有很多专栏文章。我不想一一更改。比方说,tible看起来像这样:

df <- tibble(
  x = c(1,0,1,1,'a'), 
  y = c('A', 'B', 1, 'D', 'A'), 
  z = c(1/3, 4, 5/7, 100, 3)
)
Run Code Online (Sandbox Code Playgroud)

我想根据其他标题中的值转换其列类型:

df_map <- tibble(
  col = c('x','y','z'), 
  col_type = c('integer', 'string', 'float')
)
Run Code Online (Sandbox Code Playgroud)

什么是最合适的解决方案?

r type-conversion dataframe tibble

1
推荐指数
1
解决办法
70
查看次数

重新转换R中的数据类型

我在大数据集中有一个数据子集,它不符合数据读入R时分配的原始数据类型.如何重新转换数据子集的数据类型,就像R只做R一样那个子集被读了?

示例:假设存在一个由变量1-4(v1到v4)组成的数据堆栈和一个以列名v5到v8开头的不同数据集.

  V1 V2 V3 V4
1 32  a 11  a
2 12  b 32  b
3  3  c 42  c
4 v5 v6 v7 v8
5  a 43  a 35
6  b 33  b 64
7  c 55  c 32
Run Code Online (Sandbox Code Playgroud)

如果我使用v5-v8创建一个新的df,如何自动将整个数据"重新转换"为适当的类型?(就像我要重新读取csv中的数据一样,R会这么做)

r type-conversion

0
推荐指数
1
解决办法
283
查看次数

标签 统计

r ×7

type-conversion ×3

casting ×1

data.table ×1

dataframe ×1

dplyr ×1

function ×1

r-faq ×1

tibble ×1