更改数据类型我可以使用类似的东西
l1 <- c("fac1","fac2","fac3")
l2 <- c("dbl1","dbl2","dbl3")
dat[,l1] <- lapply(dat[,l1], factor)
dat[,l2] <- lapply(dat[,l2], as.numeric)
Run Code Online (Sandbox Code Playgroud)
同 dplyr
dat <- dat %>% mutate(
fac1 = factor(fac1), fac2 = factor(fac2), fac3 = factor(fac3),
dbl1 = as.numeric(dbl1), dbl2 = as.numeric(dbl2), dbl3 = as.numeric(dbl3)
)
Run Code Online (Sandbox Code Playgroud)
在dplyr中有更优雅(更短)的方式吗?
克里斯托夫
在dplyr中有一种优雅的方式来处理NA为0(na.rm = TRUE)吗?
data <- data.frame(a=c(1,2,3,4), b=c(4,NA,5,6), c=c(7,8,9,NA))
data %>% mutate(sum = a + b + c)
a b c sum
1 4 7 12
2 NA 8 NA
3 5 9 17
4 6 NA NA
but I like to get
a b c sum
1 4 7 12
2 NA 8 10
3 5 9 17
4 6 NA 10
Run Code Online (Sandbox Code Playgroud)
即使我知道在许多其他情况下这不是理想的结果
与str(data)我得到的head水平(1-2值)
fac1: Factor w/ 2 levels ... :
fac2: Factor w/ 5 levels ... :
fac3: Factor w/ 20 levels ... :
val: num ...
Run Code Online (Sandbox Code Playgroud)
与dplyr::glimpse(data)我得到因子水平的数/值更多的价值,但没有相关信息.是否有自动方法获取data.frame中所有因子变量的所有级别信息?一个包含更多信息的简短表格
levels(data$fac1)
levels(data$fac2)
levels(data$fac3)
Run Code Online (Sandbox Code Playgroud)
或者更准确地说是一个优雅的版本
for (n in names(data))
if (is.factor(data[[n]])) {
print(n)
print(levels(data[[n]]))
}
Run Code Online (Sandbox Code Playgroud)
克里斯托夫
如何使用以下方法简化或执行以下操作dplyr:
对所有data.frame名称运行一个函数mutate_each(funs()),例如值
names(iris) <- make.names(names(iris))
Run Code Online (Sandbox Code Playgroud)删除不存在的列(即删除任何内容),例如
iris %>% select(-matches("Width")) # ok
iris %>% select(-matches("X")) # returns empty data.frame, why?
Run Code Online (Sandbox Code Playgroud)按名称(字符串)添加新列,例如
iris %>% mutate_("newcol" = 0) # ok
x <- "newcol"
iris %>% mutate_(x = 0) # adds a column with name "x" instead of "newcol"
Run Code Online (Sandbox Code Playgroud)重命名不存在的data.frame colname
names(iris)[names(iris)=="X"] <- "Y"
iris %>% rename(sl=Sepal.Length) # ok
iris %>% rename(Y=X) # error, instead of no change
Run Code Online (Sandbox Code Playgroud)是否有使用类似的方法
filter(df, grepl("A|B|C",location))
Run Code Online (Sandbox Code Playgroud)
对于dplyr SQL表?在SQL中它是probalby a LIKE.我可以将SQL表转换为R数据表,但它非常大.(http://cran.r-project.org/web/packages/dplyr/vignettes/databases.html)我得到的那一刻
Error in sqliteSendQuery(conn, statement) :
error in statement: no such function: GREPL
Run Code Online (Sandbox Code Playgroud)
克里斯托夫
您可以在绘图区域内设置图例的位置,例如
... + theme(legend.justification=c(1,0), legend.position=c(1,0))
Run Code Online (Sandbox Code Playgroud)
是否有类似的简单方法来更改条带文本的位置(或分组图中的因子级别)
library(reshape2); library(ggplot2)
sp <- ggplot(tips, aes(x=total_bill, y=tip/total_bill)) + geom_point() +
facet_grid(. ~ sex)
sp
Run Code Online (Sandbox Code Playgroud)
(http://www.cookbook-r.com/Graphs/Facets_%28ggplot2%29/)
在格子中,我会使用像strip.text = levels(dat $ Y)[panel.number()]和panel.text(...)这样的东西,但也可能有一种更干净的方式......
谢谢,Christof
是否有预定义的格式函数将数字四舍五入到前3位数?(开头应该是数字!= 0)
-0.02528498 to -0.0253
1.857403 to 1.86
2060943 to 2060000
0.00006513832 to 0.0000651
Run Code Online (Sandbox Code Playgroud) 只有在连接具有正斜率时,才能以一种舒适的方式连接点?(否则该函数的行为应与xyplot(...)完全相同)
library(lattice)
dat <- data.frame(x=1:10,y=sample(1:10))
xyplot(y ~ x, data=dat,
panel = function(x, y,...) {
panel.xyplot(x, y, type="o",...)
}
)
Run Code Online (Sandbox Code Playgroud)
所以结果应该像这样的情节,但没有交叉线:

谢谢Christof
包HH似乎提供了一种可视化ANCOVA的简便方法
library(HH)
data(hotdog)
ancova(Sodium ~ Calories * Type, data=hotdog)
Run Code Online (Sandbox Code Playgroud)

有喜欢的东西来combinate这样一个舒适的方式panel.ablineq从latticeExtra?(http://latticeextra.r-forge.r-project.org#panel.ablineq)获取具体功能(斜率,截距)?
我想在a data.frame和线性插入所有缺失值之间添加最小和最大日期之间的所有缺失日期,例如
df <- data.frame(date = as.Date(c("2015-10-05","2015-10-08","2015-10-09",
"2015-10-12","2015-10-14")),
value = c(8,3,9,NA,5))
date value
2015-10-05 8
2015-10-08 3
2015-10-09 9
2015-10-12 NA
2015-10-14 5
date value approx
2015-10-05 8 8
2015-10-06 NA 6.33
2015-10-07 NA 4.67
2015-10-08 3 3
2015-10-09 9 9
2015-10-10 NA 8.20
2015-10-11 NA 7.40
2015-10-12 NA 6.60
2015-10-13 NA 5.80
2015-10-14 5 5
Run Code Online (Sandbox Code Playgroud)
有没有一个明确的解决方案dplyr和approx?(我不喜欢我的10行for循环代码.)