我有一些列要从数据框中删除.我知道我们可以使用以下内容单独删除它们:
df$x <- NULL
Run Code Online (Sandbox Code Playgroud)
但我希望用更少的命令来做到这一点.
另外,我知道我可以使用整数索引来删除列,如下所示:
df <- df[ -c(1, 3:6, 12) ]
Run Code Online (Sandbox Code Playgroud)
但我担心我的变量的相对位置可能会改变.
考虑到R的强大程度,我认为可能有一种更好的方法,就是逐一删除每一列.
我想在同一个图中绘制y1和y2.
x <- seq(-2, 2, 0.05)
y1 <- pnorm(x)
y2 <- pnorm(x, 1, 1)
plot(x, y1, type = "l", col = "red")
plot(x, y2, type = "l", col = "green")
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做的时候,它们并没有被绘制在同一个地块中.
在Matlab中可以做到hold on
,但有人知道如何在R中做到这一点吗?
这是一个非常新的问题,但我说有这样的数据:
test_data <-
data.frame(
var0 = 100 + c(0, cumsum(runif(49, -20, 20))),
var1 = 150 + c(0, cumsum(runif(49, -10, 10))),
date = seq(as.Date("2002-01-01"), by="1 month", length.out=100)
)
Run Code Online (Sandbox Code Playgroud)
如何在x轴上使用?绘制时间序列var0
和var1
同一图表?奖励积分,如果你做和不同的颜色,并且可以包括一个传奇!date
ggplot2
var0
var1
我确信这很简单,但我找不到任何例子.
假设我在R中有一个日期,其格式如下.
date
2012-02-01
2012-02-01
2012-02-02
Run Code Online (Sandbox Code Playgroud)
在R中是否有任何方法可以添加与日期相关的星期几的另一列?数据集非常大,因此手动完成并进行更改是没有意义的.
df = data.frame(date=c("2012-02-01", "2012-02-01", "2012-02-02"))
Run Code Online (Sandbox Code Playgroud)
因此,在添加日期之后,它最终会看起来像:
date day
2012-02-01 Wednesday
2012-02-01 Wednesday
2012-02-02 Thursday
Run Code Online (Sandbox Code Playgroud)
这可能吗?任何人都可以指向我一个允许我这样做的包吗?只是尝试按日期自动生成日期.
为了摆脱a中名为"foo"的列data.frame
,我可以这样做:
df <- df[-grep('foo', colnames(df))]
但是,一旦df
转换为data.table
对象,就无法删除列.
例:
df <- data.frame(id = 1:100, foo = rnorm(100))
df2 <- df[-grep('foo', colnames(df))] # works
df3 <- data.table(df)
df3[-grep('foo', colnames(df3))]
Run Code Online (Sandbox Code Playgroud)
但是一旦它被转换为一个data.table
对象,这就不再适用了.
tibble
(先前tbl_df
)是由R中的dplyr
数据帧操作包创建的数据帧的版本.它在意外调用数据帧时防止长表输出.
一旦数据帧被tibble
/ 包装tbl_df
,是否有一个命令来查看整个数据帧(数据帧的所有行和列)?
如果我使用df[1:100,]
,我将看到所有100行,但如果我使用df[1:101,]
,它将只显示前10行.我想轻松显示所有行以快速滚动它们.
是否有dplyr命令来抵消这种情况或解开数据帧的方式?
在R中,计算TRUE
逻辑向量中值的数量的最有效/惯用方法是什么?我可以想到两种方式:
z <- sample(c(TRUE, FALSE), 1000, rep = TRUE)
sum(z)
# [1] 498
table(z)["TRUE"]
# TRUE
# 498
Run Code Online (Sandbox Code Playgroud)
你喜欢哪个?还有什么更好的吗?
我想data.frame
根据逻辑条件从a中过滤行.我们假设我有数据框
expr_value cell_type
1 5.345618 bj fibroblast
2 5.195871 bj fibroblast
3 5.247274 bj fibroblast
4 5.929771 hesc
5 5.873096 hesc
6 5.665857 hesc
7 6.791656 hips
8 7.133673 hips
9 7.574058 hips
10 7.208041 hips
11 7.402100 hips
12 7.167792 hips
13 7.156971 hips
14 7.197543 hips
15 7.035404 hips
16 7.269474 hips
17 6.715059 hips
18 7.434339 hips
19 6.997586 hips
20 7.619770 hips
21 7.490749 hips
Run Code Online (Sandbox Code Playgroud)
我想要的是获得一个看起来相同但只有一个cell_type数据的新数据框.例如包含单元格类型"hesc"的子集/选择行:
expr_value cell_type
1 5.929771 hesc
2 5.873096 hesc …
Run Code Online (Sandbox Code Playgroud) 命令:
t <- data.frame(v = 5:1, v2 = 9:5)
write.csv(t, "t.csv")
Run Code Online (Sandbox Code Playgroud)
产生的文件:
# "","v","v2"
# "1",5,9
# "2",4,8
# "3",3,7
# "4",2,6
# "5",1,5
Run Code Online (Sandbox Code Playgroud)
如何防止将带有行索引的第一列写入文件?
从数据帧,是否有聚集(一个简单的方法sum
,mean
,max
同时等c)中多个变量?
以下是一些示例数据:
library(lubridate)
days = 365*2
date = seq(as.Date("2000-01-01"), length = days, by = "day")
year = year(date)
month = month(date)
x1 = cumsum(rnorm(days, 0.05))
x2 = cumsum(rnorm(days, 0.05))
df1 = data.frame(date, year, month, x1, x2)
Run Code Online (Sandbox Code Playgroud)
我想同时按年和月汇总数据框中的变量x1
和x2
变量df2
.以下代码聚合x1
变量,但是是否也可以同时聚合x2
变量?
### aggregate variables by year month
df2=aggregate(x1 ~ year+month, data=df1, sum, na.rm=TRUE)
head(df2)
Run Code Online (Sandbox Code Playgroud)
任何建议将不胜感激.