给定行的列值大于0?

时间:2016-09-16 17:19:18

标签: r dataframe

我有一个类似于:

的数据框
col1  col2  col3
0     0     .4
.3    1     0
0     0     .8

我想创建一个新列,用于计算其他三行中大于0的列值数:

col1  col2  col3  col4
0     0     .4    1
.3    1     0     2
0     0     .8    1

2 个答案:

答案 0 :(得分:3)

您只需使用Source: local data frame [8 x 3] Groups: k [?] k l accuracy <int> <int> <dbl> 1 2 0 0.5396825 2 2 1 0.5277778 3 3 0 0.5317460 4 3 1 0.5317460 5 4 0 0.5277778 6 4 1 0.5357143 7 5 0 0.4841270 8 5 1 0.4841270 功能:

apply

所以要添加现有的数据框:

## Example Data
dd = data.frame(col1 = c(0, .3, 0), col2=c(0, 1, 0),
                        col3=c(0.4, 0, 0.8))
apply(dd, 1, function(i) sum(i > 0))

或者,我们可以将数据帧转换为逻辑值,然后使用dd$col4 = apply(dd, 1, function(i) sum(i > 0))

rowSums

答案 1 :(得分:0)

在循环遍历列以创建Reduce逻辑+

之后,另一个选项是list vector dd$col4 <- Reduce(`+`, lapply(dd, `>`, 0)) dd # col1 col2 col3 col4 #1 0.0 0 0.4 1 #2 0.3 1 0.0 2 #3 0.0 0 0.8 1
host = ''        # Symbolic name meaning all available interfaces
port = 12345     # Arbitrary non-privileged port
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((host, port))
s.listen(1)
conn, addr = s.accept()
print('Connected by', addr)
while True:
    data = conn.recv(1024)
    if not data: break
    conn.sendall(data)
conn.close()