小编Jaa*_*aap的帖子

选择data.table中的列子集

我想打印数据表的所有列,dt除了其中一个已命名V3但不想按编号而是按名称引用它.这是我的代码:

  dt = data.table(matrix(sample(c(0,1),5,rep=T),50,10))
  dt[,-3,with=FALSE]   #  Is this the only way to not print column "V3"? 
Run Code Online (Sandbox Code Playgroud)

使用这种data frame方式,可以通过代码执行此操作:

  df = data.frame(matrix(sample(c(0,1),5,rep=T),50,10))
  df[,!(colnames(df)%in% c("X3"))]
Run Code Online (Sandbox Code Playgroud)

所以,我的问题是:是否有另一种方法不在数据表中打印一列而不必按编号引用它?我想找到类似于我上面使用的数据帧语法但使用数据表的东西.

r data.table

25
推荐指数
4
解决办法
2万
查看次数

创建ID(行号)列

我需要创建一个具有唯一ID的列,基本上将行号添加为自己的列.我当前的数据框如下所示:

   V1  V2
1  23  45
2  45  45
3  56  67
Run Code Online (Sandbox Code Playgroud)

如何让它看起来像这样:

V1  V2  V3
1  23  45
2  45  45
3  56  67
Run Code Online (Sandbox Code Playgroud)

?非常感谢

r dataframe r-faq

24
推荐指数
7
解决办法
6万
查看次数

使用T&F代替TRUE&FALSE有什么问题吗?

我注意到,使用TF替代TRUE,并FALSE在R的功能和使我有同样的结果.当然,T并且F更简洁,但我看到TRUE并且FALSE更频繁地使用.

我想知道两者之间是否有任何区别?使用T和有什么问题F吗?

r r-faq

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

我如何获得列联表?

我正在尝试从特定类型的数据创建列联表.这对于循环等是可行的......但是因为我的最终表将包含超过10E5的单元格,所以我正在寻找一个预先存在的函数.

我的初步数据如下:

PLANT                  ANIMAL                          INTERACTIONS
---------------------- ------------------------------- ------------
Tragopogon_pratensis   Propylea_quatuordecimpunctata         1
Anthriscus_sylvestris  Rhagonycha_nigriventris               3
Anthriscus_sylvestris  Sarcophaga_carnaria                   2
Heracleum_sphondylium  Sarcophaga_carnaria                   1
Anthriscus_sylvestris  Sarcophaga_variegata                  4
Anthriscus_sylvestris  Sphaerophoria_interrupta_Gruppe       3
Cerastium_holosteoides Sphaerophoria_interrupta_Gruppe       1
Run Code Online (Sandbox Code Playgroud)

我想创建一个这样的表:

                       Propylea_quatuordecimpunctata Rhagonycha_nigriventris Sarcophaga_carnaria Sarcophaga_variegata Sphaerophoria_interrupta_Gruppe
---------------------- ----------------------------- ----------------------- ------------------- -------------------- -------------------------------
Tragopogon_pratensis   1                             0                       0                   0                    0
Anthriscus_sylvestris  0                             3                       2                   4                    3
Heracleum_sphondylium  0                             0                       1                   0                    0
Cerastium_holosteoides 0                             0                       0                   0                    1
Run Code Online (Sandbox Code Playgroud)

也就是说,行中的所有植物物种,列中的所有动物物种,有时没有相互作用(而我的初始数据仅列出发生的相互作用).

r contingency

23
推荐指数
5
解决办法
6万
查看次数

将多个值列重新调整为宽格式

我有以下数据框,我想使用强制转换来创建一个"数据透视表",其中包含两个值(值和百分比)的列.这是数据框:

expensesByMonth <- structure(list(month = c("2012-02-01", "2012-02-01", "2012-02-01", 
"2012-02-01", "2012-02-01", "2012-02-01", "2012-02-01", "2012-02-01", 
"2012-02-01", "2012-02-01", "2012-02-01", "2012-02-01", "2012-03-01", 
"2012-03-01", "2012-03-01", "2012-03-01", "2012-03-01", "2012-03-01", 
"2012-03-01", "2012-03-01", "2012-03-01", "2012-03-01", "2012-03-01", 
"2012-03-01", "2012-03-01", "2012-03-01", "2012-03-01", "2012-04-01", 
"2012-04-01", "2012-04-01", "2012-04-01", "2012-04-01", "2012-04-01", 
"2012-04-01", "2012-04-01", "2012-04-01", "2012-04-01", "2012-04-01", 
"2012-04-01", "2012-04-01", "2012-04-01", "2012-04-01", "2012-04-01", 
"2012-04-01", "2012-04-01", "2012-05-01", "2012-05-01", "2012-05-01", 
"2012-05-01", "2012-05-01", "2012-05-01", "2012-05-01", "2012-05-01", 
"2012-05-01", "2012-05-01", "2012-05-01", "2012-05-01", "2012-05-01", 
"2012-05-01", "2012-05-01", "2012-05-01", "2012-05-01", "2012-05-01", 
"2012-06-01", "2012-06-01", "2012-06-01", "2012-06-01", "2012-06-01", 
"2012-06-01", "2012-06-01", "2012-06-01", "2012-06-01", "2012-06-01", 
"2012-06-01", "2012-06-01", …
Run Code Online (Sandbox Code Playgroud)

r reshape r-faq

22
推荐指数
4
解决办法
3万
查看次数

按日期子集数据

我有一个名为的数据集EPL2011_12.我想通过按日期对原始进行子集来制作新的数据集.日期位于名为Date "日期为DD-MM-YY"格式的列中.

我试过了

EPL2011_12FirstHalf <- subset(EPL2011_12, Date > 13-01-12)
Run Code Online (Sandbox Code Playgroud)

EPL2011_12FirstHalf <- subset(EPL2011_12, Date > "13-01-12")
Run Code Online (Sandbox Code Playgroud)

但每次都会收到此错误消息.

Warning message:
In Ops.factor(Date, 13- 1 - 12) : > not meaningful for factors
Run Code Online (Sandbox Code Playgroud)

我想这意味着R正在处理文本而不是数字,为什么它不起作用?

r date subset

22
推荐指数
2
解决办法
9万
查看次数

如何进行自然分类?

R 有天然的排序吗?

说我有一个像这样的角色矢量:

seq.names <- c('abc21', 'abc2', 'abc1', 'abc01', 'abc4', 'abc201', '1b', '1a')
Run Code Online (Sandbox Code Playgroud)

我想以不合理的方式对其进行排序,所以我得到了回复:

c('1a', '1b', 'abc1', 'abc01', 'abc2', 'abc4', 'abc21', 'abc201')
Run Code Online (Sandbox Code Playgroud)

这存在于某处,还是应该开始编码?

sorting r natural-sort r-faq

21
推荐指数
2
解决办法
6976
查看次数

在ggplot2中对图例进行排序

我从以下数据中生成了堆积百分比条形图,该数据位于csv文件中,

,ONE,TWO,THREE
1,2432,420,18
2,276,405,56
3,119,189,110
4,90,163,140
5,206,280,200
6,1389,1080,1075
7,3983,3258,4878
8,7123,15828,28111
9,8608,48721,52576
10,9639,44725,55951
11,8323,45695,32166
12,2496,18254,26600
13,1524,8591,18583
14,7861,1857,1680
15,10269,5165,4618
16,13560,64636,63262
Run Code Online (Sandbox Code Playgroud)

使用以下代码

library(ggplot2)
library(reshape2)
library(scales)

data <- read.csv(file="file.csv",sep=",",header=TRUE)
data <- data[,2:ncol(data)]
datam <- melt(cbind(data,ind = sort(rownames(data))),is.var = c('ind'))
datam$ind <- as.numeric(datam$ind)
ggplot(datam,aes(x = variable, y = value,fill = factor(as.numeric(ind)))) +
geom_bar(position = "fill") + scale_y_continuous(labels =percent_format()) +
scale_fill_discrete("Barcode\nMatch")  +xlab("Barcode")+ylab("Reads")
Run Code Online (Sandbox Code Playgroud)

结果是 在此输入图像描述

问题是图例中的项目与它们所代表的堆栈的顺序不同.颜色和数字是正确的,但顺序不是.换句话说,有没有办法颠倒图例中项目的顺序?谢谢

r ggplot2

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

如何删除所有重复项以便NONE保留在数据框中?

PHP 有一个类似的问题,但我正在使用R,我无法将解决方案转换为我的问题.

我有10行50列的数据框,其中一些行完全相同.如果我在它上面使用unique,我会得到一行 - 比方说 - "type",但我真正想要的只是获得那些只出现一次的行.有谁知道我怎么能做到这一点?

我可以看看集群和热图来手动排序,但我有比上面提到的更大的数据帧(最多100行),这有点棘手.

r unique duplicates r-faq

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

如何将管道链(magrittr)的结果提供给对象

这是一个相当简单的问题.但我找不到每个google/stackexchange的答案,并查看magrittr的文档.如何提供通过%>%连接的函数链的结果来创建向量?

我看到大多数人做的是:

a <-
data.frame( x = c(1:3), y = (4:6)) %>%
sum()
Run Code Online (Sandbox Code Playgroud)

但是还有一个解决方案,我可以将结果管道链接到一个对象,也许是别名或类似的东西,有点像这样:

data.frame( x = c(1:3), y = (4:6)) %>%
sum() %>%
a <- ()
Run Code Online (Sandbox Code Playgroud)

这将有助于将所有代码保持在相同的逻辑中,将结果输送到"管道下方".

r magrittr

21
推荐指数
3
解决办法
8539
查看次数