我有以下数据框(简化),国家/地区变量作为因素,值变量具有缺失值:
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) 我经常遇到这种情况,我认为必须有一个很好的成语.假设我有一个包含一系列属性的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中得到因子矩阵.这是真的吗?如果是,为什么?如果没有,我该怎么办?
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) 我正在尝试重命名R 中数据框中A
的因子级别.我目前的方法是这样的:column1
df
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)
任何人都可以指导我采取正确的方法吗?
我有一个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) 我想为连续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)
这显示了y变量彼此相邻但不是bin x.
ggplot(dfmelt) +
geom_boxplot(aes(x=x,y=value,fill=variable))+
facet_grid(~variable)
Run Code Online (Sandbox Code Playgroud)
现在我想为x的每个bin生成这样的图.
什么必须改变或添加?
我有一个数据集,其中一个列有因子级别"a" "b" "c" "NotPerformed"
.如何将所有"NotPerformed"
因素更改为NA?
这是我的数据框中包含的信息:
## 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的关系,但它不会让我在指定的时间段内绘制我想要的因素.我不知道接下来该尝试什么...
我想使用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产生影响吗?