关于数据帧操作的问题。不是HW,虽然我会把它称为硬件问题。我知道有三种方式可以做到这一点,但我似乎无法找到它。
问题
我有一个数据框 A ,有10列和一千行,它充满了一些数据。我有一个1列矩阵 B 有1列和1000行,它由1和0填充(TRUE或FALSE)。
目标:创建一个新的数据框 C ,其中仅包含 A 中矩阵 C 的等效索引中具有TRUE值的行。
(如果不清楚则更加明确)我在 A 上执行操作,将结果(true或false)存储在列数据框中(当然长度相同) )现在希望将其提取到自己的矩阵中 新矩阵的大小是sum(B)X 10(只是逻辑演绎)
感谢您的阅读!感谢您的帮助。
示例
数据框A
Name State metric1 metric2
Joe MA 23 25
Moe AZ 123 2971
Bo CA 938 387
Yo UT 1 3
矩阵B
1
0
1
0
所需输出(数据帧C )
Name State metric1 metric2
Joe MA 23 25
Bo CA 938 387
答案 0 :(得分:1)
为什么不简单
.img {
position: relative;
float: left;
width: 100px;
height: 100px;
background-position: 50% 50%;
background-repeat: no-repeat;
background-size: cover;
}
<div class="img" style="background-mage:url('http://i.imgur.com/tI5jq2c.jpg');"></div>
<div class="img" style="background-mage:url('http://i.imgur.com/37w80TG.jpg');"></div>
<div class="img" style="background-mage:url('http://i.imgur.com/B1MCOtx.jpg');"></div>
给
A <- data.frame(cbind(A=1:10,B=21:30,C=41:50))
B <- data.frame(D=rep(c(TRUE,FALSE),5))
C <- A[B$D,]
OP编辑后编辑
> A
A B C
1 1 21 41
2 2 22 42
3 3 23 43
4 4 24 44
5 5 25 45
6 6 26 46
7 7 27 47
8 8 28 48
9 9 29 49
10 10 30 50
> B
D
1 TRUE
2 FALSE
3 TRUE
4 FALSE
5 TRUE
6 FALSE
7 TRUE
8 FALSE
9 TRUE
10 FALSE
> C
A B C
1 1 21 41
3 3 23 43
5 5 25 45
7 7 27 47
9 9 29 49
给
A <- data.frame(cbind(name=c("Joe", "Moe", "Bo" , "Yo"),
State=c("MA","AZ","CA","UT"),
metric1 = c(23,123,938,1),
metric2 = c(25,2971,387,3)))
B <- c(1,0,1,0)
C <- A[B==1,]
C
答案 1 :(得分:1)
替代使用data.table
:
library(data.table)
# convert you dataset into a data.table
setDT(A)
# create a dummy variable (TRUE or FALSE) using operations other columns
A[ , logical := sum(metric1, metric1) > 50 ]
# subset the data
A[ logical == T]