我想打印数据表的所有列,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)
所以,我的问题是:是否有另一种方法不在数据表中打印一列而不必按编号引用它?我想找到类似于我上面使用的数据帧语法但使用数据表的东西.
我需要创建一个具有唯一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)
?非常感谢
我注意到,使用T和F替代TRUE,并FALSE在R的功能和使我有同样的结果.当然,T并且F更简洁,但我看到TRUE并且FALSE更频繁地使用.
我想知道两者之间是否有任何区别?使用T和有什么问题F吗?
我正在尝试从特定类型的数据创建列联表.这对于循环等是可行的......但是因为我的最终表将包含超过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)
也就是说,行中的所有植物物种,列中的所有动物物种,有时没有相互作用(而我的初始数据仅列出发生的相互作用).
我有以下数据框,我想使用强制转换来创建一个"数据透视表",其中包含两个值(值和百分比)的列.这是数据框:
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) 我有一个名为的数据集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)
但每次都会收到此错误消息.
Run Code Online (Sandbox Code Playgroud)Warning message: In Ops.factor(Date, 13- 1 - 12) : > not meaningful for factors
我想这意味着R正在处理文本而不是数字,为什么它不起作用?
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)
这存在于某处,还是应该开始编码?
我从以下数据中生成了堆积百分比条形图,该数据位于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)
结果是

问题是图例中的项目与它们所代表的堆栈的顺序不同.颜色和数字是正确的,但顺序不是.换句话说,有没有办法颠倒图例中项目的顺序?谢谢
PHP 有一个类似的问题,但我正在使用R,我无法将解决方案转换为我的问题.
我有10行50列的数据框,其中一些行完全相同.如果我在它上面使用unique,我会得到一行 - 比方说 - "type",但我真正想要的只是获得那些只出现一次的行.有谁知道我怎么能做到这一点?
我可以看看集群和热图来手动排序,但我有比上面提到的更大的数据帧(最多100行),这有点棘手.
这是一个相当简单的问题.但我找不到每个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 ×10
r-faq ×5
contingency ×1
data.table ×1
dataframe ×1
date ×1
duplicates ×1
ggplot2 ×1
magrittr ×1
natural-sort ×1
reshape ×1
sorting ×1
subset ×1
unique ×1