我有一个类似于:
的数据框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
答案 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()