是否有可能以某种方式针对相同的分类变量对多个变量执行t.test,而不进行如下数据集的重新整形?
data(mtcars)
library(dplyr)
library(tidyr)
j <- mtcars %>% gather(var, val, disp:qsec)
t <- j %>% group_by(var) %>% do(te = t.test(val ~ vs, data = .))
t %>% summarise(p = te$p.value)
Run Code Online (Sandbox Code Playgroud)
我试过用
mtcars%>%summarise_each_(funs =(t.test(.~vs))$ p.value,vars = disp:qsec)
但它会引发错误.
奖励:如何t %>% summarise(p = te$p.value)还包括分组变量的名称?
我试图在"."上分割一个字符串.并使用"."之前和之后的两个字符串创建其他列.
tes<-c("1.abc","2.di","3.lik")
dat<-c(5,3,2)
h<-data.frame(tes,dat)
h$num<-substr(h$tes,1,1)
h$prim<-unlist(strsplit(as.character(h$tes),"\\."))[2]
h$prim<-sapply(h$tes,unlist(strsplit(as.character(h$tes),"\\."))[2])
Run Code Online (Sandbox Code Playgroud)
我想h$prim包含"abc","di","lik"..但是我无法弄明白.我猜strsplit不是矢量化,但后来我认为该sapply版本应该有效.但是我认为应该很容易:-)
问候,// M
a.2<-sample(1:10,100,replace=T)
b.2<-sample(1:100,100,replace=T)
a.3<-data.frame(a.2,b.2)
r<-sapply(split(a.3,a.2),function(x) which.max(x$b.2))
a.3[r,]
Run Code Online (Sandbox Code Playgroud)
返回列表索引,而不是整个data.frame的索引
我试图返回b.2每个子组的最大值a.2.我怎样才能有效地做到这一点?
我想创建一个自动生成单向和多变量回归分析的函数,但我无法弄清楚如何在向量中指定**变量...**这看起来很简单,但略读文档我到目前为止还没弄明白......
简单的例子
a<-rnorm(100)
b<-rnorm(100)
k<-c("a","b")
d<-c(a,b)
summary(k[1])
Run Code Online (Sandbox Code Playgroud)
但是k [1] ="a"并且是一个字符向量... d只是b附加到a,而不是变量名.实际上,我希望k [1]代表向量a.
感谢任何答案......
//中号
如何在 mtcars 数据集中 hp 超过 110 的每一行后插入新行,仍然保持 hp <=110 的汽车?
library(tidyverse)
data(mtcars)
Run Code Online (Sandbox Code Playgroud)
我尝试了以下但没有成功--
mtcars %>% modify_if(.p = .$hp>110,.f = add_row(.after=1)) #noe equal lengths
mtcars %>% filter(hp>110) %>% add_row(.after=1) #only gives an extra row for the first row meeting condition
mtcars %>% rownames_to_column() %>%
group_by(rowname) %>% modify_if(.p=.$hp>110,.f=add_row(.after=1)) #not egual length
Run Code Online (Sandbox Code Playgroud)
以下 - 使用 purrr - 似乎有效:
foo <- function(df){
if (df$hp>110) {df<-add_row(.data=df,.after=1)}
df
}
mtcars %>% rownames_to_column(var = "make") %>% nest(-make) %>%
mutate(new=map(data,~ foo(.x))) %>% select (-data) %>% unnest(new) …Run Code Online (Sandbox Code Playgroud) 我正在尝试生成一个已排序的表并导出到latex中.然而,似乎xtable无法应对已排序的表.建议?
a<-sample(letters,500,replace=T)
b<-table(a)
c<-sort(table(a),decreasing=T)
xtable(b)
xtable(c)
Run Code Online (Sandbox Code Playgroud)
//中号
如何轻松地将R中的引文导入到例如获得的尾注中
citation("ggplot2")
Run Code Online (Sandbox Code Playgroud)
有没有一个很好的工作流程或我手动必须这样做?
我有一个宽大的数据集,超过1500列.由于许多变量都是重复的,我想重塑成长形.但是,r抛出一个错误:
Error in guess(varying) :
Failed to guess time-varying variables from their names
Run Code Online (Sandbox Code Playgroud)
试着通过玩具示例来理解这一点,我发现了这一点
u<-data.frame(id=1:100,f.1=rnorm(100),u.1=rnorm(100),i.1=rnorm(100),f.2=rnorm(100),u.2=rnorm(100),i.2=rnorm(100),
f.3=rnorm(100),u.3=rnorm(100),i.3=rnorm(100))
reshape(u,varying=2:10,direction="long")
Run Code Online (Sandbox Code Playgroud)
工作良好.但是,我的数据看起来更像是:
u<-data.frame(id=1:100,f1=rnorm(100),u1=rnorm(100),i1=rnorm(100),f2=rnorm(100),u2=rnorm(100),i2=rnorm(100),
f3=rnorm(100),u3=rnorm(100),i3=rnorm(100))
reshape(u,varying=2:10,direction="long")
Run Code Online (Sandbox Code Playgroud)
这就是我失去的地方.任何聪明的想法,除了更改变量名称(这是累人的),我怎么能这样做?
我正在尝试从重新整形的数据集中粘贴字符串.我正在使用data.table包,如下所示:
m<-data.frame(x=rep(c("a","b"),20),y=factor(sample(letters,40,replace=T)))
DT<-data.table(m)
setkey(DT,x)
DT[,paste(y,sep=","),by=x]
Run Code Online (Sandbox Code Playgroud)
但是,除了变量名之外,这只会给出一个与原始框架完全相同的新框架.我希望输出是两个连接的向量,其中变量被粘贴在一起.我怎样才能做到这一点?