标签: r-factor

如何在没有观察结果的情况下降低因子水平?

可能的重复:
在 R 中的子集数据框中删除因子级别

我有一个包含多个变量的数据框,我正在使用它运行混合模型lme()。其中一个变量 ForAgeCat 有五个因子水平:1、2、3、4、5。

str(mvthab.3hr.fc$ForAgeCat)
 >Factor w/ 5 levels "1","2","3","4",..: 5 5 5 5 5 5 5 5 5 5 ...
Run Code Online (Sandbox Code Playgroud)

问题是因子级别 3 实际上不存在,也就是说,在这个数据集(这是一个较大数据集的子集)中没有来自因子级别 3 的观察结果,我认为这扰乱了我在 lme() 中的建模。有人可以帮我从因子级别列表中删除/消除因子级别 3 吗?

r r-factor

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

r import csv 跳过第一行和最后一行

我知道很多帖子已经回答了像我这样的类似问题,但我已经尝试了两天了,似乎我在这里没有看到图片......

\n\n

我得到的 csv 文件如下所示:

\n\n
Werteformat:                wertabh. (Q)\nWerte:  \n01.01.76 00:00  0,363\n02.01.76 00:00  0,464\n...\n31.12.10 00:00  1,03\n01.01.11 00:00  L\xc3\xbccke\n
Run Code Online (Sandbox Code Playgroud)\n\n

我想用数据创建时间线,但无法正确导入 csv。

\n\n

到目前为止我已经尝试过:

\n\n
data<-read.csv2(file, \n            header = FALSE, \n            sep = ";", \n            quote="\\"", \n            dec=",", \n            col.names=c("Datum", "Abfluss"), \n            skip=2, \n            nrows=length(strs)-2, \n            colClasses=c("date","numeric"))`\n
Run Code Online (Sandbox Code Playgroud)\n\n

但后来我明白了

\n\n
"Fehler in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings,  : \n  scan() erwartete \'a real\', bekam \'L\xef\xbf\xbdcke\'"\n
Run Code Online (Sandbox Code Playgroud)\n\n

所以我删除了 colClasses 并且它起作用了,我删除了所有不需要的行。但是:一切都是因素。所以我使用 as.numeric

\n\n
Abfluss1<-as.numeric(data$Abfluss)\n
Run Code Online (Sandbox Code Playgroud)\n\n

知道我可以用 Abfluss 1 进行计算,但这些值与原始 …

csv r numeric r-factor

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

当存在重复时如何根据优先级重新分类/替换值

我有一个 df 其中value指示 a 的状态drug

g1 = data.frame ( 
    drug = c('a','a','a','d','d'),
    value = c('fda','trial','case','case','pre')
)

drug value
1    a   fda
2    a trial
3    a  case
4    d  case
5    d   pre
Run Code Online (Sandbox Code Playgroud)

drug因此,对于药物,我想根据以下优先级顺序替换任何重复value

fda > trial > case > pre 
Run Code Online (Sandbox Code Playgroud)

例如,如果药物 d 既是“病例”又是“前”,则 d 的所有发生率都将被重新分类为“病例”。决赛桌应该是这样的。

  drug value
1    a   fda
2    a   fda
3    a   fda
4    d  case
5    d  case
Run Code Online (Sandbox Code Playgroud)

如何做到这一点,而不必循环遍历每种药物并首先找出优先级然后进行替换?

r plyr dplyr r-factor

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

自动将二进制变量编码为因子?

我有一个问题:是否有 R 函数可以自动将二进制变量编码为因子?

我有一个包含超过 80 个变量(列)的 tibble,其中许多变量具有布尔性质(0、1 和 NA),R 作为numeric导入。由于我想避免手动将它们转换为Factor,我想知道是否有一个函数能够自动检测a (或 a ) 中的二进制数值变量并将它们更改为 Factor ?我可以自己创建这样的函数,但如果它已经存在,为什么还要麻烦呢?data.frametibble

boolean r r-factor

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

删除两列中具有重复因子水平组合的行

经过bind_rows()一些大的 data.frames 之后,我最终得到一个像这样的 data.frame:

tmp <- data.frame(Query=c("A", "B", "C", "D", "A"), target=c("D", "A", "A", "A", "B"), values=runif(5))
tmp
  Query target     values
1     A      D 0.06075322
2     B      A 0.43179750
3     C      A 0.32325309
4     D      A 0.26714620
5     A      B 0.96854999
Run Code Online (Sandbox Code Playgroud)

我需要删除之前在任一方向上出现过的包含Query和组合的所有行target(AxD 是 DxA 的重复项)。在示例中,所需的输出为(因为第 4 行是第 1 行的重复项,第 5 行是第 2 行的重复项)

tmp
      Query target     values
    1     A      D 0.06075322
    2     B      A 0.43179750
    3     C      A 0.32325309
Run Code Online (Sandbox Code Playgroud)

非常感谢!

r duplicates dataframe r-factor

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

如何更改因子的数据帧,以便可以对数据帧进行boxplotted?

我有一个数据框,其中的列包含可变数量的数字和可变数量的NA.数据框如下所示:

    V1 V2 V3 V4 V5 V6
1    0 11  4  0  0 10
2    0 17  3  0  2  2
3   NA  0  4  0  1  9
4   NA 12 NA  1  1  0
<snip>
743 NA NA NA NA  8 NA
744 NA NA NA NA  0 NA
Run Code Online (Sandbox Code Playgroud)

我想制作一个箱形图,但是当我这样做的时候

boxplot(dataframe)
Run Code Online (Sandbox Code Playgroud)

我收到了错误

adding class "factor" to an invalid object
Run Code Online (Sandbox Code Playgroud)

当我做

lapply(dataframe,class)
Run Code Online (Sandbox Code Playgroud)

我得到以下输出:

$V1
[1] "factor"
$V2
[1] "factor"
<snip>
$V6
[1] "factor"
Run Code Online (Sandbox Code Playgroud)

那么如何更改我的数据框以便将列视为数字?

r boxplot dataframe r-factor

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

选择数据帧的一列将返回一个因子,而不是另一个数据帧

我有下面的代码,如果m == 2则cd仍然是数据帧,而名称(cd)来自原始数据帧d.但是,如果m == 3,则数据帧中只有一列仍然存在而cd变为一个因子而我丢失了名称......

samplesize <-100
g1 <- gl(2,samplesize/2,labels=c("V","M"))
g2 <- gl(3,samplesize/3,labels=c("V","M","U"))
m <- 2
d <- data.frame(g1,g2)
l <-  sapply(d,nlevels)
cd <- d[,l <= m]
names(cd)
Run Code Online (Sandbox Code Playgroud)

即使过滤器只留下一列,我还想保留d的名称?

r dataframe r-factor

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

子集化后ggplot2 y轴顺序发生变化

我有一个按预期工作的函数,直到我将其子集化.plotCalendar()函数是我使用ggplot2和facet在Calendar热图上的尝试.y轴顺序很重要,因为它是"WeekOfMonth" - 当订单被颠倒时,数据viz看起来不像日历.

代码如下,首先是调用代码,然后是生成一些数据的函数 - generateData(),然后是plot函数 - plotCalendar()

当我使用df作为数据时,代码按预期工作,但是当我使用df2(子集化数据)时,WeekOfMonth的顺序沿y轴反转.

library(ggplot2)
library(ProgGUIinR)
library(chron)

df <- generateData()
plotCalendar(df, dateFieldName = "dates", numericFieldName = "counts", yLab = "Month of Year")
df2 <- df[df$filterField == 42, ]
plotCalendar(df2, dateFieldName = "dates", numericFieldName = "counts", yLab = "Month of Year")
Run Code Online (Sandbox Code Playgroud)

这两个函数,一个用于生成测试数据,另一个用于绘制日历

generateData <- function()
{
      set.seed(42)
      dates <- seq(as.Date("2012/01/01"), as.Date("2012/6/30"), by = "1 day")
      counts <- 1:length(dates)
      filterField <- sample(1:42,length(dates),replace=T)
      df <- data.frame(dates, counts, filterField)

      return(df)
}


plotCalendar <- function(data, dateFieldName, numericFieldName, title = "Title", …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 r-factor

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

在数据框中重新排序因子名称的级别

DF只有一个专栏:DF$A。这是我需要以特定方式重新排列名称的因素:

l
pheno
l.ldl.a
m.ldl.b
s.ldl.c
x.vldl.b
l.vldl.c
m.vldl.d
s.vldl.f
xs.vldl.h
xxl.vldl.a
xl.hdl.a
l.hdl.b
m.hdl.c
s.hdl.d
Run Code Online (Sandbox Code Playgroud)

我尝试根据两个column 2顺序重新创建DF$A

reorderLevels <- c(XXL.VLDL,XL.VLDL,L.VLDL,M.VLDL,S.VLDL,XS.VLDL, 
                   IDL,L.LDL,M.LDL,S.LDL,XL.HDL,L.HDL,M.HDL,S.HDL)
Run Code Online (Sandbox Code Playgroud)

无需关心名称的最后一部分。

我知道如何根据名称的第一部分(第一个点之前)或根据名称的第二部分(点之间的部分)重新排序,但是我不知道如何根据名称的两个部分进行排序。

到目前为止,我可以使用以下命令对其重新排序,但仅根据名称的一部分

l1 <- l %>% mutate(m2 = match(sapply(strsplit(l$pheno, "[.]"),
                          function(x) x[1]), reorderLevels)) %>%
            arrange(m2) %>%
            select(-m2)
Run Code Online (Sandbox Code Playgroud)

sorting r r-factor

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

按名称更改data.tables中的因子级别

我明白如何在明确定义列名时更改列的级别,如本例中的Matt Dowle所示:

setattr(mydt$value,"levels",c(...))
Run Code Online (Sandbox Code Playgroud)

但是,在现实生活中的问题中,您通常不知道列名.当代码中没有明确给出"value"时,这种技术似乎不起作用:

setattr(mydt[,get("value")],"levels",c(...))
Run Code Online (Sandbox Code Playgroud)

这是一个问题.我想这个语法给我的副本列而不是对列的引用,与mydt $ value相反,但我不知道如何解决这个问题:'(

谢谢

请看这个较旧的问题

r r-factor data.table

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

标签 统计

r ×10

r-factor ×10

dataframe ×3

boolean ×1

boxplot ×1

csv ×1

data.table ×1

dplyr ×1

duplicates ×1

ggplot2 ×1

numeric ×1

plyr ×1

sorting ×1