小编Buc*_*yOH的帖子

设置打印的默认小数位数

我正在运行代码来生成输出,我希望所有输出都打印1个小数位.但是代码使用了我一般使用的函数,我不想在这些函数中指定打印输出是四舍五入的.

这个问题的答案格式化R中的小数位数建议使用options(digits=2)round(x, digits=2).

第一个选项是一般设置,非常适合舍入1.234到,1.2但会打印12.34512

如果放在函数中但第二个选项可以工作,但我不想触摸它们.如何设置这一般?

r decimal

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

分析多重反应

df1=data.frame(c("male","female","male"),c("1","2","3","4","5","6"),seq(141,170))
names(df1) = c("gender","age","height")
df1$age <- factor(df1$age,
levels=c(1,2,3,4,5,6),
labels=c("16-24","25-34","35-44","45-54","55-64","65+"))
q1a=c(1,0,1,0,0,1);q1b=c(0,0,2,2,2,0);q1c=c(0,0,3,3,0,3) #1,2 and 3 used to be compatible with existing datasets. Could change all to 1 if necessary.
df2=data.frame(q1a=q1a,q1b=q1b,q1c=q1c); df1 <- cbind(df1,df2)

rm(q1a,q1b,q1c,df2)
Run Code Online (Sandbox Code Playgroud)

我希望复制R中SPSS的多个响应问题的分析.

目前我正在使用此代码:

#creating function for analysing questions with grouped data 
multfreqtable <- function(a, b, c){

# number of respondents (for percent of cases)
totrep=sum(a==1|b==2|c==3) 

#creating frequency table
table_a=data.frame("a",sum(a==1))
names(table_a)=c("question","freq")
table_b=data.frame("b",sum(b==2))
names(table_b)=c("question","freq") 
table_c=data.frame("c",sum(c==3))
names(table_c)=c("question","freq")
table_question <-rbind(table_a,table_b,table_c)

#remove individual question tables
rm(table_a,table_b,table_c)

#adding total
total=as.data.frame("Total")
totalsum=(sum(table_question$freq,na.rm=TRUE))
totalrow=cbind(total,totalsum)
names(totalrow)=c("question","freq")
table_question=rbind(table_question,totalrow)

#adding …
Run Code Online (Sandbox Code Playgroud)

r survey spss

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

查找列号并连续计算第二个最高值

我正在尝试编写一些代码,用于标识每行的最大两个值,并提供其列号和值.

df = data.frame( car = c (2,1,1,1,0), bus = c (0,2,0,1,0),
                 walk = c (0,3,2,0,0), bike = c(0,4,0,0,1))
Run Code Online (Sandbox Code Playgroud)

我已经设法使用maxmax.col函数来实现最大值.

df$max = max.col(df,ties.method="first")
df$val = apply(df[ ,1:4], 1, max)
Run Code Online (Sandbox Code Playgroud)

据我所知,第二个值没有相应的函数,所以这样做会让事情变得有点棘手.使用此代码提供第二高的值,但(重要的是)不提供有关系的情况.它看起来也很危险.

sec.fun <- function (x) {
  max( x[x!=max(x)] )
}

df$val2 <- apply(df[ ,1:4], 1, sec.fun)
Run Code Online (Sandbox Code Playgroud)

理想情况下,该解决方案不会涉及删除任何原始数据,并且可用于查找第三,第四......最高值,但这些都不是基本要求.

r plyr dataframe

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

在R中使用read.csv - 打开文件名包含单词/短语的数据集

#set working directory
setwd("C:/Bucky/Locations/London")

#open survey data
survey.data <- read.csv("01-London-Dataset.csv")
Run Code Online (Sandbox Code Playgroud)

我期待分析多个数据集,这些数据集包含不同位置的相同信息.每个数据集都与文件夹相关的其他文件一起保存在文件夹中.

文件名都采用相同的格式 - (01-London-Dataset.csv) - 文件夹中没有其他文件名包含数据集.

一旦设置了正确的工作目录,是否可以使用read.csv打开包含单词Dataset的文件?

csv r

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

使用ddply和汇总时的结果不同.由于R和plyr版本不同?

我想总结一下类似于数据集包中的ToothGrowth数据的数据.

我想要的输出如下:

  supp   len  half   one   two
1   OJ 619.9 132.3 227.0 260.6
2   VC 508.9  79.8 167.7 261.4
Run Code Online (Sandbox Code Playgroud)

这是按剂量和补充类型分开的长度之和.我的同事使用以下代码使用R版本2.15.1和plyr_1.7.1获取此输出.

library(datasets)           

x <- ToothGrowth

test <- ddply(x,c("supp"),summarize,
                     len = sum(len,na.rm=TRUE),
                     half = sum(len[dose==0.5],na.rm=TRUE),
                     one = sum(len[dose==1],na.rm=TRUE),
                     two = sum(len[dose==2],na.rm=TRUE))
Run Code Online (Sandbox Code Playgroud)

ToothGrowth数据中没有NA,但真实数据集中有.

我得到以下输出R版本3.0.0和plyr_1.8.如果有用,我可以为两者提供完整的sessionInfo().

    supp    len half    one two
1   OJ    619.9 619.9   0   0
2   VC    508.9 508.9   0   0
Run Code Online (Sandbox Code Playgroud)

这似乎没有出现错误.在我的数据中,我只有三个'剂量',但很多'补充类型'.如果半类中没有值,则将全部总和设为一个或两个.

有没有一种方法可以实现这一点,从而在版本类型中产生一致的输出?

谢谢你的帮助.

r plyr

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

标签 统计

r ×5

plyr ×2

csv ×1

dataframe ×1

decimal ×1

spss ×1

survey ×1