Tag: r

成对重复从数据框中删除

这似乎是一个简单的问题,但我似乎无法弄清楚。 我想从数据框(DF)删除重复如果两列具有相同的值,即使这些值是相反的顺序 。 我的意思是说,你有以下的数据框架: a <- c(rep("A", 3), rep("B", 3), rep("C",2)) b <- c('A','B','B','C','A','A','B','B') df <-data.frame(a,b) ab 1 AA 2 AB 3 AB 4 BC 5 BA 6 BA 7 CB 8 CB 如果我现在删除重复,我得到以下数据框架: df[duplicated(df),] ab 3 AB 6 BA 8 CB 但是,由于“A”,“B”与“B”,“A”相同,我也想删除该数据框中的第6行。 我怎样才能自动做到这一点? 理想情况下,我可以指定哪两列进行比较,因为dataframe可能有不同的列,可能会相当大。 谢谢!

在数据框中提取每个组内的最大值

我有一个数据框与分组variables(“基因”)和值variables(“价值”): Gene Value A 12 A 10 B 3 B 5 B 6 C 1 D 3 D 4 对于我的分组variables的每个级别,我希望提取最大值。 结果应该是一个数据框,每个级别的分组variables有一行: Gene Value A 12 B 6 C 1 D 4 aggregate做到这一点吗?

在R加载文件循环

我一直在想,如果有人知道一种方式来创build一个循环加载文件/数据库在R说我有这样的一些文件:data1.csv,data2.csv,…,data100.csv。 在一些编程语言中,你可以做这样的数据+ {x} + .csv,系统将它识别为datax.csv,然后你可以应用这个循环。 有任何想法吗?

find当地的最大值和最小值

我正在寻找一个计算有效的方法来find一个庞大的R列表的数字本地最大值/最小值希望没有for循环… 例如,如果我有一个像1 2 3 2 1 1 2 1的数据文件,我想要函数返回3和7,这是本地最大值的位置。

安装旧版本的R软件包

我正在尝试使用Rpy2和ggplot2,但我得到一个错误。 在网上search了一些错误之后,我发现发生错误是因为ggplot2软件包中还没有反映在Rpy2中的变化(例如,看到这个post (编辑:链接现在已经死了))。 所以我现在需要安装一个老版本的ggplot2。 这是我想要的伪代码: install.packages("ggplot2", version='0.9.1') 但是install.packages没有version参数 。 我该怎么做?

如何将相同的函数应用于data.table中的每个指定列

我有一个data.table,我想在某些列上执行相同的操作。 这些列的名称是在一个字符向量中给出的。 在这个特殊的例子中,我想把所有这些列乘以-1。 一些玩具数据和一个向量指定相关的列: library(data.table) dt <- data.table(a = 1:3, b = 1:3, d = 1:3) cols <- c("a", "b") 现在我正在这样做,遍历字符向量: for (col in 1:length(cols)) { dt[ , eval(parse(text = paste0(cols[col], ":=-1*", cols[col])))] } 有没有办法做到这一点,没有for循环?

使用R下载压缩的数据文件,提取并导入数据

Twitter上的@EZGraphs写道:“许多在线csvs都是压缩的,有没有办法下载,解压缩压缩包,并使用R?#Rstats将数据加载到data.frame中” 我也在尝试今天这样做,但最终只是手动下载zip文件。 我尝试了这样的: fileName <- "http://www.newcl.org/data/zipfiles/a1.zip" con1 <- unz(fileName, filename="a1.dat", open = "r") 但是我感觉好像还有很长的路要走。 有什么想法吗?

根据vector中的值从数据框中select行

我有类似这样的数据: dt <- structure(list(fct = structure(c(1L, 2L, 3L, 4L, 3L, 4L, 1L, 2L, 3L, 1L, 2L, 3L, 2L, 3L, 4L), .Label = c("a", "b", "c", "d"), class = "factor"), X = c(2L, 4L, 3L, 2L, 5L, 4L, 7L, 2L, 9L, 1L, 4L, 2L, 5L, 4L, 2L)), .Names = c("fct", "X"), class = "data.frame", row.names = […]

如何防止ifelse()将Date对象转换为数字对象

我正在使用函数ifelse()来操作date向量。 我期待的结果是类的Date ,并惊讶得到一个numeric向量。 这里是一个例子: dates <- as.Date(c('2011-01-01', '2011-01-02', '2011-01-03', '2011-01-04', '2011-01-05')) dates <- ifelse(dates == '2011-01-01', dates – 1, dates) str(dates) 这是特别令人惊讶的,因为在整个vector上执行操作会返回一个Date对象。 dates <- as.Date(c('2011-01-01', '2011-01-02', '2011-01-03', '2011-01-04','2011-01-05')) dates <- dates – 1 str(dates) 我应该使用其他函数来操作Date向量吗? 如果是这样,有什么function? 如果不是,我该如何强制ifelse返回一个与input相同types的向量? ifelse的帮助页面表明,这是一个function,而不是一个错误,但我仍然努力寻找一个解释,我发现是令人惊讶的行为。

如何简洁地从数据框中写出一个包含多个variables的公式?

假设我有一个响应variables和一个包含三个协variables的数据(作为一个玩具的例子): y = c(1,4,6) d = data.frame(x1 = c(4,-1,3), x2 = c(3,9,8), x3 = c(4,-4,-2)) 我想对数据进行线性回归: fit = lm(y ~ d$x1 + d$x2 + d$y2) 有没有办法来写公式,所以我不必写出每个个人的协variables? 例如,类似的东西 fit = lm(y ~ d) (我希望数据框中的每个variables都是一个协variables)。我问,因为我的数据框中实际上有50个variables,所以我想避免写出x1 + x2 + x3 + etc 。