标签: r-factor

比较两个因素的水平

是否有可能评估两个因素,看它们是否具有相同数量的数字,如果是这样,哪一个不存在于哪一个?

r r-factor

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

如何将行转换为R中的因子?

例如,我有一个矩阵:

> a = cbind(sample(c(0,1),6,replace=T), sample(c(0,1),6,replace=T))
> a
     [,1] [,2]
[1,]    0    0
[2,]    0    0
[3,]    0    1
[4,]    1    0
[5,]    1    0
[6,]    1    1
Run Code Online (Sandbox Code Playgroud)

我想制作一个对象bab是一个因素,每个级别代表 中的不同行a。在这种情况下,b将是:

> b
[1] 1 1 2 3 3 4
Levels: 1 2 3 4
Run Code Online (Sandbox Code Playgroud)

我可以用一种肮脏的方式来做,但我想知道是否有一个优雅的解决方案?

r matrix r-factor

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

如何继续使用缺少一级(已删除)的因子?

我正在使用我下载的一组 Fitbit 数据,它有一个我试图正确订购的工作日列表。现在,当前的数据集没有“星期五”,但无论如何我都希望这些因素包括它。

即使数据集中只有 6 个工作日,我如何继续将工作日计算为 1-7?

file<-choose.files()
   slp<-data.frame(read.csv(file))

   wkdaylevels<-c("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday")

    slp$FellAsleepAt<-strptime(slp$FellAsleepAt, format="%B %e, %Y at %I:%M%p")
    slp$AwokeAt<-strptime(slp$AwokeAt,format="%B %e, %Y at %I:%M%p")
    slp$TotalTimeSlept<-gsub("h ",":",slp$TotalTimeSlept)
    slp$TotalTimeSlept<-gsub("m","",slp$TotalTimeSlept)
    slp$TimeAsleep<-as.numeric(difftime(slp$AwokeAt,slp$FellAsleepAt))
    slp$Date<-as.Date(slp$FellAsleepAt, format="%M/%D/%Y")
    slp$DayofWeek<-as.factor(weekdays(slp$Date),levels=wkdaylevels)



    ggplot(slp,aes(x=DayofWeek,y=TimeAsleep))+
        geom_point()
Run Code Online (Sandbox Code Playgroud)

这里的数据:https : //docs.google.com/spreadsheets/d/1Vdgmtwx0vNKDKEZFMEGAWQ58H66ia-xjI0evR7idfkc/edit?usp=sharing

r r-factor

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

在 R 中,因子是否能以某种方式节省空间?

如果您的.csv文件中大多数变量的大多数值都是重复的,则该文件的最终文件大小将不会很小,因为没有压缩。但是,如果将.csv文件读入 R 并将适当的变量强制转换为因子,那么数据帧或 tibble 是否会产生某种压缩优势?在整个数据帧或小标题中重复因素似乎是一个很好的压缩机会,但我不知道这是否真的发生。

我尝试在网上搜索这个问题,但没有找到答案。我不确定在哪里寻找因素的实施方式。

compression r r-factor

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

将代码修改为r中的批量处理

在被推荐使用adehabitat来计算交叉口的数量后,我偶然发现了一个轻微(希望很简单)的问题.在这个库中我使用kerneloverlap命令,因为我需要计算交集的体积.我想知道你是否可以帮我解决一些编程问题.我需要修改脚本,使其"批量"处理友好.我知道R足以让自己陷入麻烦并失去头发,因为我知道某些事情应该是可能的,但却无法弄明白如何让它发挥作用.

命令很简单:

kerneloverlap(loc[,c("X","Y")], loc$year, lev = 90, grid=30, meth="VI", conditional=TRUE)
Run Code Online (Sandbox Code Playgroud)

从数据文件中取出x,y坐标的年份,并计算在90的利用率分布中网格单元格大小为30的交叉体积.

输入文件(见下文摘录)是anid,X,Y,year和seasons.对于这个例子,只有一个赛季(请记住我有3个赛季).对于这个例子,我想在每个单独的交叉量之间的1个季节之间进行比较.所以测试数据有2年1个季节和2个人.我想说的是"在2003至2004年的产犊季节,动物1的交叉口的体积为0.8,这表明高度重叠和对一个地点的保真度".

我还想比较季节.这使得动物1在其2003年夏季和越冬季节的交叉量为0.04,这表明重叠程度低且对该位置没有保真度.

需要注意的一点是:并非所有人每年都在场,或者每个赛季都活着.因此可能需要某种低级别.

到目前为止这是我的R脚本(它不起作用).请注意,输出也没有很好地连接在一起,我似乎无法获得编译文件.我喜欢它告诉我它与比较事物的年份,个人或季节.

IDNames= levels(loc$anid)
Year = unique(loc$year)
for (i in 1:(length(IDNames))){
vi90 = kerneloverlap(loc[,c("X","Y")], loc$year, lev = 90, grid=30, meth="VI", conditional=TRUE) 
    }
colnames(vi)= c(paste(IDNames[i],Year[n], sep =""),paste(IDNames[i], Year[n], sep =""))
}
write.csv(vi,"VolInter_indiv.csv")


    structure(list(anid = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, …
Run Code Online (Sandbox Code Playgroud)

scripting for-loop r r-factor

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

公式中的R和因子编码

如果我想要自定义值假人,我该如何使用公式界面,例如,如果我想要值1和2,而不是0和1.估计可能如下所示,其中supp是因子变量.

fit <- lm(len ~ dose + supp, data = ToothGrowth)
Run Code Online (Sandbox Code Playgroud)

在这个例子中,没有太多使用不同的值,但在许多情况下"重写"模型它可能是有用的.

编辑:实际上,我有3个级别,并希望两列的编码方式不同,因此一个是1/0变量,另一个是1/2变量.上面的例子只有两个级别.

r formula r-factor

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

使用动态前置零点调整数据集中的因子

我有一个大data.frame(1.9M记录,20列).其中一列是因子列,其值为不同长度的数字(不同的字符/数字,例如567839,234324324,3243211等)注意:这些是数字代码,没有实际值,也可能只是不同的字符这个例子的长度.

现在我想将因子转换为13位数因子,以便在数字位数小于13的情况下,因子得到前导零.

例:

Old factor      Length  New factor
432543532532    12      0432543532532
3285087250932   13      3285087250932
464577534       9       0000464577534
2225324324324   13      2225324324324
864235325264    12      0864235325264
Run Code Online (Sandbox Code Playgroud)

我尝试了不同的方法,但现在我卡住了.问题在于整个数据集中因子的长度不同.

我试着用一个例子来尝试以下内容.

data.frame使用我执行代码的三个不同列创建,以识别问题.

> df.test <- as.data.frame(cbind(c("432543532532", "3285087250932", "464577534", "2225324324324", "864235325264"), c("3285087250932", "132543532532", "464577534", "2225324324324", "864235325264"), c("164577534", "3285087250932", "432543532532", "2225324324324", "864235325264")))
> df.test
             V1            V2            V3
1  432543532532 3285087250932     164577534
2 3285087250932  132543532532 3285087250932
3     464577534     464577534  432543532532
4 2225324324324 2225324324324 2225324324324
5  864235325264  864235325264  864235325264

> levels(df.test$V1) <- paste(substr("0000000000000", 0, 13 - nchar(as.character(levels(df.test$V1)))), …
Run Code Online (Sandbox Code Playgroud)

r r-factor

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

基于因子变量中的观察数量的子集化

你如何根据因子变量水平的观察数量进行子集化?我有一个包含1,000,000行和近3000个级别的数据集,我想用更少的200个观察值来对这些级别进行分组.

data <- read.csv("~/Dropbox/Shared/data.csv", sep=";")

summary(as.factor(data$factor)
10001 10002 10003 10004 10005 10006 10007 10009 10010 10011 10012 10013 10014 10016        10017 10018 10019 10020 
  414   741  2202   205   159   591   194   678   581   774   778   738  1133   997   381   157   522     6 
10021 10022 10023 10024 10025 10026 10027 10028 10029 10030 10031 10032 10033 10034 10035 10036 10037 10038 
  398   416  1236   797   943   386   446   542   508   309   452   482   425   272   261   291   145   598 
10039 10040 …
Run Code Online (Sandbox Code Playgroud)

r subset r-factor

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

R 将字符串数据帧转换为唯一数字

我有一个非常大的数据框(假设有 8 行 x 10,000 列),其中充满了字符串。我想将每个唯一的字符串转换为数字并用它替换。

例如,如果我有一个数据框:

   X1       X2       X3
1 cat    mouse     rabbit
2 dog   cat, dog    dog
Run Code Online (Sandbox Code Playgroud)

我想将其转换为:

   X1        X2     X3
1   1         2       3
2   4         5       4
Run Code Online (Sandbox Code Playgroud)

请注意,“猫,狗”的组合标签有自己的唯一编号。每个字符串的实际编号是无关紧要的,因为我这样做是为了评估者间的可靠性计算。

如果我没有获得所有独特的元素,为它们分配一个数字并替换,是否有更优雅的方法来做到这一点?

另外,如果元素中的值为空,例如“”,则应将其转换为数字 DF 中的 NA。

string r dataframe r-factor

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

标签 统计

r ×9

r-factor ×9

compression ×1

dataframe ×1

for-loop ×1

formula ×1

matrix ×1

scripting ×1

string ×1

subset ×1