标签: levels

提取因子水平时的意外行为

有人可以解释为什么levels()显示三个因子级别,而你可以看到该向量只有两个?

> str(walk.df)
'data.frame':   10 obs. of  4 variables:
 $ walker : Factor w/ 3 levels "1","2","3": 1 1 1 1 1 2 2 2 2 2

> walk.df$walker
 [1] 1 1 1 1 1 2 2 2 2 2
Levels: 1 2 3
Run Code Online (Sandbox Code Playgroud)

我想提取一个关卡矢量,我认为这是正确的方法,但正如你所看到的,那里有三个偷偷摸摸的东西弄乱了我的功能.

> as.numeric(levels(walk.df$walker))
[1] 1 2 3
Run Code Online (Sandbox Code Playgroud)

r levels

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

无法将变量传递给级别

我正在使用大型数据框而不是将操作写入内存,我一直在努力做与管道一样多的操作.在尝试在中间步骤中检查我的因子水平时,我遇到了使用该levels功能的问题,并想知道是否有人可能知道问题是什么.

一个例子:

library(dplyr)
Data <- data.frame(x = rep(LETTERS[1:5],3),
                   y = sample(1:10,length(x), replace=T))
Run Code Online (Sandbox Code Playgroud)

通常的方式有效:

levels(Data$x)
[1] "A" "B" "C" "D" "E"
Run Code Online (Sandbox Code Playgroud)

它主要用于我使用sapply:

 Data %>% select(x) %>% sapply(levels)
     x  
[1,] "A"
[2,] "B"
[3,] "C"
[4,] "D"
[5,] "E"
Run Code Online (Sandbox Code Playgroud)

但管道不起作用并返回NULL:

Data %>% select(x) %>% levels()
NULL
Run Code Online (Sandbox Code Playgroud)

为什么要Data %>% select(x) %>% levels()回来NULL

有没有办法使用管道数据的水平?

r levels dplyr

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

Levels函数返回NULL

我希望这是一个简单的解决方案.每当我运行level(df)时,我都会给出一个NULL输出.这不是我的数据框特有的,因为它与我使用的任何数据集一起出现.我想我的一个包可能有问题.有没有人碰到这个或知道修复?谢谢

null r levels

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

300 级网络广播或演讲是什么意思(在 MSDN、网络广播、培训等中)?

我想这要么是微软的某个计划,要么是美国范围内的计划。不过我不知道300、400等是什么意思。有人可以解释一下吗?这些数字是什么意思?是 MS 的事情还是更广泛的使用?

levels

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

使用Rest Server扩展为CodeIgniter设置授权级别

我正在使用CodeIgniter的Rest Server(https://github.com/philsturgeon/codeigniter-restserver)扩展,我正在努力寻找如何在方法中设置授权级别的示例.

我已经尝试了以下所有方法:

public function index_get()
{
    $this->methods['index']['level'] = 10;
    $this->methods['level'] = 10;
    $this->rest->level = 10;
    $this->level = 10;
}
Run Code Online (Sandbox Code Playgroud)

没有运气.举例赞赏.谢谢!

rest codeigniter restful-authentication levels

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

Hmisc包将原始代码从0:1更改为1:2

我使用Hmisc来标记因子名称和变量名称,这非常方便.但我发现这里的问题是代码

a <- c(1,0,1,0,1,0,1,0,1,0)
b <- c("a","b","a","b","a","b","a","b","a","b")
df.new <- data.frame(a,b)
library(Hmisc)
df.new.1 <- upData(df.new,lowernames=TRUE,a=factor(a,labels=c("No","Yes")),b=factor(b,labels=c("No","Yes")))
Run Code Online (Sandbox Code Playgroud)

对于字符向量,给出以下编码和标签

str(df.new.1$b)

 Factor w/ 2 levels "No","Yes": 1 2 1 2 1 2 1 2 1 2
Run Code Online (Sandbox Code Playgroud)

,这很好.

当您在第一种情况下使用str查找编码和标签时,它会给出

str(df.new.1$a)

 Factor w/ 2 levels "No","Yes": 2 1 2 1 2 1 2 1 2 1 ,
Run Code Online (Sandbox Code Playgroud)

这很奇怪!原始0 1编码消失了.我该如何解决这个问题?我想保留原来的0 1变量,以便以后进行回归.谢谢

label r levels hmisc

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

paste()函数和变量的排序级别

我在以下数据框中有两列,每列根据特定顺序具有级别:

head(x1)
  soa congruency
1 200          9
2 102          2
3  68          1
4  68          9
5  34          9
6  68          9

head(levels(x1$soa))
[1] "34"  "68"  "102" "200"

head(levels(x1$congruency))
[1] "1" "2" "9
Run Code Online (Sandbox Code Playgroud)

我希望能够粘贴两列,以便新变量的级别为:

"34_1""34_2""34_9""68_1""68_2""68_9"等......

但是,如果我执行以下操作:

x2 <- paste(x1$soa, x1$congruency, sep = "_")
Run Code Online (Sandbox Code Playgroud)

我得到的水平是:

x2 <- factor(x2)

class(x2)
[1] "factor"

levels(x2)
[1] "102_1" "102_2" "102_9" "200_1" "200_2" "200_9" "34_1"  "34_2"  "34_9" 
[10] "68_1"  "68_2"  "68_9" 
Run Code Online (Sandbox Code Playgroud)

我知道在粘贴列后我可以更改级别的顺序.但是我希望能够对列进行排序,以便在粘贴它之后,我不需要更改级别的顺序.有没有办法可以做到这一点?例如,我尝试使用order()函数命令x1(我正确地做了),然后粘贴两列,但我仍然得到相同的级别顺序,这不是我想要的顺序.

任何帮助将不胜感激,

阿亚拉

r paste levels

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

为这两个因素添加最大级别

我有2个因素A和B:因子A具有以下水平:

> levels (A)
[1] "1" "2" "3"
Run Code Online (Sandbox Code Playgroud)

B因子有以下几个级别:

> levels (B)
[1] "1" "2"
Run Code Online (Sandbox Code Playgroud)

我想计算它们的水平重合的元素的比例,所以我使用以下内容:

C<-mean (A == B)
Run Code Online (Sandbox Code Playgroud)

因为它们必须具有相同的水平.我在B中添加了"3"级别:

levels(B) <- c(levels(B), "3")
Run Code Online (Sandbox Code Playgroud)

然而,这仅仅是一个例子,因为有时A的级别比B级更高,有时B的级别比A级更高.我想向每个级别插入最大级别的数量,这样它们就会相同而且我将能够计算C.我该怎么办?

r levels

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

重新排序R data.frame中的因子级别

这是我所面对的一个简单例子.我有我的因子水平,B-1, B-2, B-9, B-10, B-11并希望按照给定的顺序排列它们.在这里,我可以轻松地重新排列级别,但是,在我的数据中,我确实有复杂的结构,并希望通过一些编码来完成.我想知道如何按逻辑顺序排列这些因子水平.

set.seed(12345)
f <- rep(c("B-1", "B-2", "B-9", "B-10", "B-11"), each=3)
Y <- runif(n=15, min=100, max=1000)
df <- data.frame(f, Y)


levels(df$f)
[1] "B-1"  "B-10" "B-11" "B-2"  "B-9"

library(gtools)
mixedsort(df$f)

[1] B-1  B-1  B-1  B-10 B-10 B-10 B-11 B-11 B-11 B-2  B-2  B-2  B-9  B-9  B-9 

Levels: B-1 B-10 B-11 B-2 B-9

df2 <- df[mixedorder(df$f), ]


df3 <- within(df, 
         Position <- factor(f, 
                          levels=names(sort(table(f), 
                                            decreasing=TRUE))))

levels(df3$Position)
[1] "B-1"  "B-10" "B-11" "B-2"  "B-9" 
Run Code Online (Sandbox Code Playgroud)

编辑

现在我可以找到这个问题的解决方案,这个问题 …

sorting r levels

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

减少每个因子dplyr方法的级别数

我试图减少数据中每个因子变量的级别数.我想减少执行2次操作的级别数:

  1. 如果级别数大于截止值,则将较不频繁的级别替换为新级别,直到级别数达到截止值为止
  2. 将一个因子中的等级替换为没有足够的观察值到一个新的等级

我写了一个工作正常的函数,但我不喜欢这些代码.如果REMAIN级别没有足够的观察结果也没关系.我更喜欢dplyr方法.

ReplaceFactor <- function(data, max_levels, min_values_factor){
    # First make sure that not to many levels are in a factor
    for(i in colnames(data)){
        if(class(data[[i]]) ==  "factor"){
            if(length(levels(data[[i]])) > max_levels){
                levels_keep <- names(sort(table(data[[i]]), decreasing = T))[1 : (max_levels - 1)]
                data[!get(i) %in% levels_keep, (i) := "REMAIN"]
                data[[i]] <- as.factor(as.character(data[[i]]))
            }
        } 
    }
    # Now make sure that in each level has enough observations
    for(i in colnames(data)){
        if(class(data[[i]]) ==  "factor"){
            if(min(table(data[[i]])) < min_values_factor){
                levels_replace <- table(data[[i]])[table(data[[i]]) < min_values_factor]
                data[get(i) %in% …
Run Code Online (Sandbox Code Playgroud)

r levels dplyr

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

标签 统计

levels ×10

r ×8

dplyr ×2

codeigniter ×1

hmisc ×1

label ×1

null ×1

paste ×1

rest ×1

restful-authentication ×1

sorting ×1