标签: r-factor

如何用数据框中的因子用LOCF填充NA,按国家/地区划分

我有以下数据框(简化),国家/地区变量作为因素,值变量具有缺失值:

country value
AUT     NA
AUT     5
AUT     NA
AUT     NA
GER     NA
GER     NA
GER     7
GER     NA
GER     NA
Run Code Online (Sandbox Code Playgroud)

以下内容生成以上数据框:

data <- data.frame(country=c("AUT", "AUT", "AUT", "AUT", "GER", "GER", "GER", "GER", "GER"), value=c(NA, 5, NA, NA, NA, NA, 7, NA, NA))
Run Code Online (Sandbox Code Playgroud)

现在,我想使用最后一次观察结果(LOCF)替换每个国家子集中的NA值.我知道命令na.locf动物园包.data <- na.locf(data)会给我以下数据框:

country value
AUT     NA
AUT     5
AUT     5
AUT     5
GER     5
GER     5
GER     7
GER     7
GER     7
Run Code Online (Sandbox Code Playgroud)

但是,该功能仅应用于按国家/地区划分的各个子集.以下是我需要的输出:

country value
AUT     NA
AUT     5 …
Run Code Online (Sandbox Code Playgroud)

r missing-data dataframe r-factor

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

用于多个类别的ifelse样式重新编码的习语

我经常遇到这种情况,我认为必须有一个很好的成语.假设我有一个包含一系列属性的data.frame,包括"product".我还有一把钥匙,可以将产品转化为品牌+尺寸.产品代码1-3是Tylenol,4-6是Advil,7-9是拜耳,10-12是Generic.

什么是最快的(就人类时间而言)编码方式?

ifelse如果有3个或更少的类别,我倾向于使用嵌套的;如果有超过3个类型,则键入数据表并将其合并.任何更好的想法?Stata有一个非常漂亮的recode命令,虽然我相信它会促进数据代码混合有点过分.

dat <- structure(list(product = c(11L, 11L, 9L, 9L, 6L, 1L, 11L, 5L, 
7L, 11L, 5L, 11L, 4L, 3L, 10L, 7L, 10L, 5L, 9L, 8L)), .Names = "product", row.names = c(NA, 
-20L), class = "data.frame")
Run Code Online (Sandbox Code Playgroud)

r recode r-factor

17
推荐指数
6
解决办法
2519
查看次数

我们可以在R中得到因子矩阵吗?

似乎不可能在R中得到因子矩阵.这是真的吗?如果是,为什么?如果没有,我该怎么办?

f <- factor(sample(letters[1:5], 20, rep=TRUE), letters[1:5])
m <- matrix(f,4,5)
is.factor(m) # fail.

m <- factor(m,letters[1:5])
is.factor(m) # oh, yes? 
is.matrix(m) # nope. fail. 

dim(f) <- c(4,5) # aha?
is.factor(f) # yes.. 
is.matrix(f) # yes!

# but then I get a strange behavior
cbind(f,f) # is not a factor anymore
head(f,2) # doesn't give the first 2 rows but the first 2 elements of f
# should I worry about it?
Run Code Online (Sandbox Code Playgroud)

integer r vector matrix r-factor

17
推荐指数
2
解决办法
7662
查看次数

重命名R中的一个因子级别

我正在尝试重命名R 中数据框中A的因子级别.我目前的方法是这样的:column1df

levels(df[!is.na(df$column1) & df$column1 == 'A',]) <- 'B'
Run Code Online (Sandbox Code Playgroud)

它不会引发任何错误或警告但完全无效.

B 是不是已经存在的水平(从我怀疑的试验和错误是重要的),所以以下,我的第一次尝试,也没有工作

df[!is.na(df$column1) & df$column1 == 'A', 'column1'] <- 'B'
Run Code Online (Sandbox Code Playgroud)

任何人都可以指导我采取正确的方法吗?

r r-factor

17
推荐指数
2
解决办法
1万
查看次数

按因子对数据框列进行排序

我有一个3列(name,, )的数据框y,sex其中name是字符,y是一个数值,sex是一个因子.

sex<-c("M","M","F","M","F","M","M","M","F")
x<-c("MARK","TOM","SUSAN","LARRY","EMMA","LEONARD","TIM","MATT","VIOLET")
name<-as.character(x)
y<-rnorm(9,8,1)
score<-data.frame(x,y,sex)
score
     name      y     sex
1    MARK  6.767086   M
2     TOM  7.613928   M
3   SUSAN  7.447405   F
4   LARRY  8.040069   M
5    EMMA  8.306875   F
6 LEONARD  8.697268   M
7     TIM 10.385221   M
8    MATT  7.497702   M
9  VIOLET 10.177969   F
Run Code Online (Sandbox Code Playgroud)

如果我想订购,y我会使用:

score[order(score$y),]
        x         y sex
1    MARK  6.767086   M
3   SUSAN  7.447405   F
8    MATT  7.497702   M
2     TOM …
Run Code Online (Sandbox Code Playgroud)

sorting r r-factor

16
推荐指数
2
解决办法
5万
查看次数

ggplot:为连续x的每个组排列多个y变量的箱线图

我想为连续x变量的组创建多个变量的箱线图.对于每组x,箱形图应该彼此相邻排列.

数据如下所示:

require (ggplot2)
require (plyr)
library(reshape2)

set.seed(1234)
x   <- rnorm(100)
y.1 <- rnorm(100)
y.2 <- rnorm(100)
y.3 <- rnorm(100)
y.4 <- rnorm(100)

df <- as.data.frame(cbind(x,y.1,y.2,y.3,y.4))
Run Code Online (Sandbox Code Playgroud)

然后我融化了

dfmelt <- melt(df, measure.vars=2:5)    
Run Code Online (Sandbox Code Playgroud)

这个解决方案 中显示的facet_wrap(ggplot(facets)中的因子多个绘图)给出了单个图中的每个变量,但是我希望每个变量的箱形图彼此相邻,每个x的bin都在一个图.

ggplot(dfmelt, aes(value, x, group = round_any(x, 0.5), fill=variable))+
geom_boxplot() + 
geom_jitter() + 
facet_wrap(~variable)
Run Code Online (Sandbox Code Playgroud)

图.1

这显示了y变量彼此相邻但不是bin x.

ggplot(dfmelt) +
geom_boxplot(aes(x=x,y=value,fill=variable))+
facet_grid(~variable)
Run Code Online (Sandbox Code Playgroud)

fig2

现在我想为x的每个bin生成这样的图.

什么必须改变或添加?

r continuous ggplot2 boxplot r-factor

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

R如何将其中一个级别更改为NA

我有一个数据集,其中一个列有因子级别"a" "b" "c" "NotPerformed".如何将所有"NotPerformed"因素更改为NA?

r r-factor

15
推荐指数
3
解决办法
7252
查看次数

在R中将因子转换为日期/时间

这是我的数据框中包含的信息:

## minuteofday: factor w/ 89501 levels "2013-06-01 08:07:00",...
## dDdt: num 7.8564 2.318 ...
## minutes: POSIXlt, format: NA NA NA
Run Code Online (Sandbox Code Playgroud)

我需要将分钟列转换为日期/时间格式:

minuteave$minutes <- as.POSIXlt(as.character(minuteave$minuteofday), format="%m/%d/%Y %H:%M:%S")
Run Code Online (Sandbox Code Playgroud)

我试过了as.POSIXlt,as.POSIXct而且as.Date.这些都没有奏效.有人有想法吗.

目标是绘制分钟与dDdt的关系,但它不会让我在指定的时间段内绘制我想要的因素.我不知道接下来该尝试什么...

r date posixct posixlt r-factor

14
推荐指数
2
解决办法
7万
查看次数

为什么as.factor在内部使用时返回一个字符?

我想使用apply()以下方法将变量转换为因子:

a <- data.frame(x1 = rnorm(100),
                x2 = sample(c("a","b"), 100, replace = T),
                x3 = factor(c(rep("a",50) , rep("b",50))))

a2 <- apply(a, 2,as.factor)
apply(a2, 2,class)
Run Code Online (Sandbox Code Playgroud)

结果是:

         x1          x2          x3 
"character" "character" "character" 
Run Code Online (Sandbox Code Playgroud)

我不明白为什么这会导致字符向量而不是因子向量.

r apply r-factor

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

如何从R中的因子变量中删除级别的排序?

标题说明了一切,我在生成它时订购了一个因子变量,现在我想删除顺序并将其用作无序因子变量.另一个问题是,如果我使用我的因子变量作为回归中的预测因子,如果它是有序(序数)还是简单因子变量(分类),它会对R产生影响吗?

variables r r-factor

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