小编Mic*_*ael的帖子

将因子转换为数字而不丢失信息R(as.numeric()似乎不起作用)

可能重复:
R - 如何在R中将因子转换为整数\numeric而不丢失信息

有关as.numeric()函数的以下事实已引起我的注意

> blah<-c("4","8","10","15")
> blah
[1] "4"  "8"  "10" "15"
> blah.new<-as.factor(blah)
> blah.new
[1] 4  8  10 15
Levels: 10 15 4 8
> blah.new1<-as.numeric(blah.new)
> blah.new1
[1] 3 4 1 2
Run Code Online (Sandbox Code Playgroud)

当我使用as.numeric()将具有4,8,10和15级别的因子转换为定量变量时,每个数字都会转换为排名,原始值将丢失.

如何获取级别为10,15,4和8的向量'blah.new',并将其转换为数值10,15,4和8?

(这个问题的出现是因为read.table()读取定量变量的数据集是一个因素)

谢谢!!!!

*****更新:FIGURED IT OUT******

blah.new1<-as.numeric(as.character(blah.new))
Run Code Online (Sandbox Code Playgroud)

但是,我想知道as.numeric()的文档在哪里说这个函数将参数转换为排名列表?

r r-factor

29
推荐指数
1
解决办法
11万
查看次数

如何在OSX上自动加载R中的设置?如何找到R_HOME,配置Rprofile.site等?

我有一个Macintosh,我试图自动加载包,自制函数,并在每次启动R时使用修改后的设置.我相信这可以通过一个名为Rprofile.site的文件来完成,并通过创建函数.First和.Last在那个文件中.

一个问题是,我不知道我的R_HOME目录是什么,它用于什么,或者它是否存在.我找到了两个功能,我认为它们都给了我它的位置,但我得到了不同的结果.

这是第一个

> Sys.getenv("R_home")
R_home 
    ""
Run Code Online (Sandbox Code Playgroud)

第二个

> R.home()
[1] "/Library/Frameworks/R.framework/Resources"
Run Code Online (Sandbox Code Playgroud)

据我所知,我的机器上甚至不存在第二个目录.我目前正在从我的应用程序目录运行R.

r startup

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

使用Stargazer包按分类变量获取单独的摘要统计信息

我想使用为分组变量的每个类别生成摘要统计信息.我可以在单独的表中完成它,但我喜欢它在一个 - 如果这对于这个包没有不合理的挑战.

例如

library(stargazer)
stargazer(ToothGrowth, type = "text")
#> 
#> =========================================
#> Statistic N   Mean  St. Dev.  Min   Max  
#> -----------------------------------------
#> len       60 18.813  7.649   4.200 33.900
#> dose      60 1.167   0.629   0.500 2.000 
#> -----------------------------------------
Run Code Online (Sandbox Code Playgroud)

提供了连续变量的夏季统计数据ToothGrowth.我想用分类变量将该夏季分开supp,也在ToothGrowth.

期望结果的两点建议,

stargazer(ToothGrowth ~ supp, type = "text")
#> 
#> ==================================================
#> Statistic         N   Mean   St. Dev.  Min   Max  
#> --------------------------------------------------
#> OJ       len       30 16.963  8.266   4.200 33.900
#>          dose      30 …
Run Code Online (Sandbox Code Playgroud)

r summary stargazer

8
推荐指数
2
解决办法
4230
查看次数

使用dplyr对多个变量的所有可能组合进行分组

鉴于以下情况

library(dplyr)
myData <- tbl_df(data.frame( var1 = rnorm(100), 
                             var2 = letters[1:3] %>%
                                    sample(100, replace = TRUE) %>%
                                    factor(), 
                             var3 = LETTERS[1:3] %>%
                                    sample(100, replace = TRUE) %>%
                                    factor(), 
                             var4 = month.abb[1:3] %>%
                                    sample(100, replace = TRUE) %>%
                                    factor()))
Run Code Online (Sandbox Code Playgroud)

我想将"myData"分组,最终找到var2,var3和var4的所有可能组合的摘要数据分组.

我可以创建一个列表,其中包含所有可能的变量组合作为字符值

groupNames <- names(myData)[2:4]

myGroups <- Map(combn, 
              list(groupNames), 
              seq_along(groupNames),
              simplify = FALSE) %>%
              unlist(recursive = FALSE)
Run Code Online (Sandbox Code Playgroud)

我的计划是使用for()循环为每个变量组合创建单独的数据集

### This Does Not Work
for (i in 1:length(myGroups)){
     assign( myGroups[i]%>%
             unlist() %>%
             paste0(collapse = "")%>%
             paste0("Data"), 
               myData %>% 
               group_by_(lapply(myGroups[[i]], as.symbol)) %>%
               summarise( n …
Run Code Online (Sandbox Code Playgroud)

r summary dplyr

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

ggplot2强制y轴从原点开始并浮动y轴上限

经过一番搜索,我仍然不高兴!

是否有一种简单的方法可以制作一个y轴从原点开始并清晰显示所有数据的图形?

这是我的问题:

set.seed(123)
my.data<- data.frame(x.var = rnorm(100, 50),
                     y.var = rnorm(100, 50,10))


## Annoying because it doesn't start at origin
ggplot(my.data, aes(x.var, y.var))+
  geom_point()


## Annoying because origin is not at bottom
ggplot(my.data, aes(x.var, y.var))+
  geom_point()+
  expand_limits(y = 0)

## Annoying because point is cut off
ggplot(my.data, aes(x.var, y.var))+
  geom_point()+
  scale_y_continuous(expand = c(0,0))+
  expand_limits(y = 0)
Run Code Online (Sandbox Code Playgroud)

问题"强制原点从ggplot2(R)中的0开始"的最佳答案以

"你可能需要稍微调整一下以确保点不会被切断"

为什么会这样?我可以手动调整轴,但我不想每次都这样做!

互联网上的一些家伙有一个涉及的解决方案

#Find the current ymax value for upper bound
#(via http://stackoverflow.com/questions/7705345/how-can-i-extract-plot-axes-ranges-for-a-ggplot2-object#comment24184444_8167461 )
gy=ggplot_build(g)$panel$ranges[[1]]$y.range[2]
g=g+ylim(0,gy)

#Handle the overflow by expanding the …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

6
推荐指数
2
解决办法
5947
查看次数

每小时与dplyr一起用零填充空闲时间

我有一个类似于下面"my_data"格式的数据集,其中每一行都是一个事件的计数.我想获得每小时发生多少事件的摘要.我希望每小时没有任何事件被包含在0中,因为它的"hourly_total"值.

我可以使用dplyr实现这一点,如图所示,但是空小时被删除而不是设置为0.

谢谢!

set.seed(123)
library(dplyr)
library(lubridate)

latemail <- function(N, st="2012/01/01", et="2012/1/31") {
       st <- as.POSIXct(as.Date(st))
       et <- as.POSIXct(as.Date(et))
       dt <- as.numeric(difftime(et,st,unit="sec"))
       ev <- sort(runif(N, 0, dt))
       rt <- st + ev
   }

my_data <- data_frame( fake_times = latemail(25),
                   count = 1)

my_data %>% group_by( rounded_hour = floor_date(fake_times, unit = "hour")) %>%
            summarise( hourly_total = sum(count))
Run Code Online (Sandbox Code Playgroud)

r dplyr

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

根据2个不同变量的值从矩阵中进行选择

假设我有一个矩阵,其响应变量的值为一列,两个特征,如性别和位置,作为另外两列.

如何根据性别和位置的具体值选择响应的特定值?

例如,我知道

数据集$响应[性别=="男"]

将选择所有男性.但是我想要从位置=='SE'的男性中选择响应值.我不知道该怎么做.

非常感谢!

ps(我尝试在互联网上寻找这个,但很难找到[]运营商的帮助)

r matrix selection logical-operators

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

在LaTeX中创建一个多项选择题

我试图在LaTeX中提出一个多项选择题.我是否有点困惑

\begin{question}{MultipleChoice}

是默认情况下LaTeX可以处理的东西,还是我需要额外的包,描述等...(我是LaTex的新手).

话虽如此,如果我运行以下代码,我不会得到一个多选题,而是一个错误,说'lonely\item - 可能缺少一个列表环境.

提前感谢您的时间和耐心!

  %%%% ENVIRONMENT FOR LIST FOR QUESTIONS LIST %%%%
    \newenvironment{questions}{ %   %%%% Begin preliminary environment code
        \begin{list}{ %     %%%% Begin list item label code
            \bfseries\upshape\arabic{qcounter}:
        }{ %    %%%% Begin list item body code
            \usecounter{qcounter}
            \setlength{\labelwidth}{1in}
            \setlength{\leftmargin}{0.25in}
            \setlength{\labelsep}{0.5ex}
            \setlength{\itemsep}{2em}
        } %%%%% End list item body code
    }{        %%%%% Begin wrapup environment code
        \end{list}
    } %%%%% End wrapup environment code

    %%%% ENVIRONMENT FOR A SINGLE QUESTION %%%%
    \newenvironment{question}{\item{}}{}



    \begin{question}{MultipleChoice}
    \qutext{$3\log x-2\log y=$}
    \choice*{$\log\left(\displaystyle\frac{x^3}{y^2}\right)$}
    \choice{$\log(x^3y^2)$}
    \choice{$\log(3x-2y)$} …
Run Code Online (Sandbox Code Playgroud)

latex multiple-choice

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

防止R舍入

如何防止R四舍五入?

例如,

> a<-893893084082902
> a
[1] 8.93893e+14
Run Code Online (Sandbox Code Playgroud)

我在那里失去了很多信息.我尝试过signif(),它似乎没有做我想要的.

提前致谢!

(这是由于我的一名学生试图确定以每秒数字计算到数千万亿的时间所需的时间)

r rounding-error

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

执行两个向量的"交叉乘积",但添加

我正在尝试使用R来执行操作(理想情况下具有类似显示的输出),例如

> x<-1:6
> y<-1:6
> x%o%y
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    1    2    3    4    5    6
[2,]    2    4    6    8   10   12
[3,]    3    6    9   12   15   18
[4,]    4    8   12   16   20   24
[5,]    5   10   15   20   25   30
[6,]    6   12   18   24   30   36
Run Code Online (Sandbox Code Playgroud)

通过添加而不是乘法找到每个条目.

我也有兴趣创建36个有序对(1,1),(1,2)等...

此外,我想使用另一个矢量

z<-1:4
Run Code Online (Sandbox Code Playgroud)

在x,y和z之间创建所有可能的有序三元组.

我正在使用R来研究滚动骰子时可能总数的可能性.

谢谢你的帮助!这个网站对我有很大的帮助.我感谢任何花时间回答陌生人问题的人.

更新所以我发现`outer(x,y,'+')将首先做我想要的.但我仍然不知道如何创建有序对或有序三元组.

r cross-product

3
推荐指数
2
解决办法
4638
查看次数