Tag: r faq

加快R中的循环操作

我在R中有一个很大的性能问题。我写了一个迭代data.frame对象的函数。 它只是添加一个新的列data.frame和积累的东西。 (操作简单)。 data.frame大约有850K行。 我的电脑还在工作(现在大约10小时),我不知道运行时间。 dayloop2 <- function(temp){ for (i in 1:nrow(temp)){ temp[i,10] <- i if (i > 1) { if ((temp[i,6] == temp[i-1,6]) & (temp[i,3] == temp[i-1,3])) { temp[i,10] <- temp[i,9] + temp[i-1,10] } else { temp[i,10] <- temp[i,9] } } else { temp[i,10] <- temp[i,9] } } names(temp)[names(temp) == "V10"] <- "Kumm." return(temp) […]

通过唯一标识符聚合并将相关值连接成一个string

我有一个需要,我想可以通过aggregate或reshape来满足,但我不能完全弄清楚。 我有一个名称( brand ),并附有身份证号码( id )的名单。 这个数据的格式很长,所以名字可以有多个ID。 我想通过名称( brand )去重复,并将多个可能的id连接成由注释分隔的string。 例如: brand id RadioShack 2308 Rag & Bone 4466 Ragu 1830 Ragu 4518 Ralph Lauren 1638 Ralph Lauren 2719 Ralph Lauren 2720 Ralph Lauren 2721 Ralph Lauren 2722 应该成为: RadioShack 2308 Rag & Bone 4466 Ragu 1830,4518 Ralph Lauren 1638,2719,2720,2721,2722 我将如何做到这一点?

使用R添加前导零

我有一组数据,看起来像这样: anim <- c(25499,25500,25501,25502,25503,25504) sex <- c(1,2,2,1,2,1) wt <- c(0.8,1.2,1.0,2.0,1.8,1.4) data <- data.frame(anim,sex,wt) data anim sex wt anim2 1 25499 1 0.8 2 2 25500 2 1.2 2 3 25501 2 1.0 2 4 25502 1 2.0 2 5 25503 2 1.8 2 6 25504 1 1.4 2 我想在每个动物ID之前添加一个零: data anim sex wt anim2 1 […]

在data.frame中删除具有NAs(缺失值)的行

我想删除这个数据框中所有列中包含NA的行。 以下是我的示例数据框。 gene hsap mmul mmus rnor cfam 1 ENSG00000208234 0 NA NA NA NA 2 ENSG00000199674 0 2 2 2 2 3 ENSG00000221622 0 NA NA NA NA 4 ENSG00000207604 0 NA NA 1 2 5 ENSG00000207431 0 NA NA NA NA 6 ENSG00000221312 0 1 2 3 2 基本上,我想要得到如下的数据框。 gene hsap mmul mmus […]

查找所有重复的行,包括“下标较小的元素”

R的duplicated返回一个向量,该向量显示向量或数据框的每个元素是否具有较小下标的元素的副本。 所以,如果一个5行dataframe的第3,4和5行是相同的, duplicated将给我这个向量 FALSE, FALSE, FALSE, TRUE, TRUE 但在这种情况下,我真的想得到 FALSE, FALSE, TRUE, TRUE, TRUE 也就是说,我想知道一行是否被一个较大的下标行重复。

错误:无法findfunction…在R

我使用R和尝试some.function但我得到这个错误消息: Error: could not find function `some.function` 这个问题很常见。 当你得到这个error: could not find function在R中error: could not find function ,你怎么解决它? 预先感谢您的帮助。 这是一个常见问题,所以请尽可能完整。 答案是一个社区的答案,所以随时编辑,如果你觉得缺less一些东西。 这个问题在meta上被批准: https : //meta.stackexchange.com/questions/101892/community-wiki-with-common-error-messages-allowed

将年份和月份(“yyyy-mm”格式)转换为date?

我有一个这样的数据集: Month count 2009-01 12 2009-02 310 2009-03 2379 2009-04 234 2009-05 14 2009-08 1 2009-09 34 2009-10 2386 我想绘制数据(月份作为x值,并计为y值)。 由于数据中有空白,我想将本月的信息转换为date。 我试过了: as.Date("2009-03", "%Y-%m") 但它没有工作。 怎么了? 看来,date()也需要一天,不能为一天设置一个标准值? 哪个function解决了我的问题?

用于访问列表或数据框元素的和]符号之间的区别

R提供了两种不同的方法来访问列表或data.frame的元素[]和[[]]运算符。 两者有什么区别? 在什么情况下我应该使用一个在另一个之上?

在子集数据框中放置因子水平

我有一个数据框包含一个因素。 当我使用subset()或其他索引函数创build此数据框的subset() ,会创build一个新的数据框。 但是,因素variables保留了所有的原始级别 – 即使它们不存在于新的数据框架中。 这在创build多面绘图或使用依赖于因子级别的函数时会产生麻烦。 在我的新数据框架中从一个因素中删除层次的最简洁的方法是什么? 这是我的例子: df <- data.frame(letters=letters[1:5], numbers=seq(1:5)) levels(df$letters) ## [1] "a" "b" "c" "d" "e" subdf <- subset(df, numbers <= 3) ## letters numbers ## 1 a 1 ## 2 b 2 ## 3 c 3 ## but the levels are still there! levels(subdf$letters) ## [1] "a" "b" "c" […]

将每列中的一个列折叠/连接/聚合为单个逗号分隔的string

我想根据两个分组variables在数据框中聚合一列,并用逗号分隔各个值。 这里是一些数据: data <- data.frame(A = c(rep(111, 3), rep(222, 3)), B = rep(1:2, 3), C = c(5:10)) data # ABC # 1 111 1 5 # 2 111 2 6 # 3 111 1 7 # 4 222 2 8 # 5 222 1 9 # 6 222 2 10 “A”和“B”是分组variables,“C”是我想折叠成逗号分隔string的variables。 我努力了: library(plyr) ddply(data, .(A,B), […]