如何解决有没有办法要求行值在R中彼此对应?
所以我的问题听起来不太正确,但是我不怎么正确地表述它。
我正在尝试执行以下操作。我有一个包含3列的数据框,其中2列可以有1(是)或2(否)。还有1列具有1,2或3的列。现在我想做的是查看哪个百分比的所有2列在1上,第1列在1或2上,其中所有2列在2上,在第1列上3,并且只有1的2列和1或2的一列。
如果你赶上我的漂流?
例如df是:
V1 V2 V3
1 1 2 1
2 2 2 2
3 1 1 1
4 2 2 1
5 1 2 1
5行中的1全部为1(是),所以20%将全部为1,所以我希望我的结果像这样:
all 1: 20%
带有dput(DT)
的数据示例
structure(list(rom = c("2","1","2","1"),power = c("2","2"),pain = c("2","3","2")),row.names = c(NA,-57L),class = "data.frame")
解决方法
如果数据中只有1和2,则可以使用rowSums
计算按行求和,并计算总和等于数据帧中列数的行的比率。
mean(rowSums(df) == ncol(df)) * 100
#[1] 20
数据
df <- structure(list(V1 = c(1L,2L,1L,1L),V2 = c(2L,2L),V3 = c(1L,1L)),class = "data.frame",row.names = c(NA,-5L))
,
也许这就是您想要的?
DT <- data.table::fread("V1 V2 V3
1 2 1
2 2 2
1 1 1
2 2 1
1 2 1 ")
table( rowSums( DT * DT == 1 ) ) / nrow(DT)
# 0 1 2 3
# 0.2 0.2 0.4 0.2
,
也许您可以使用paste
来加入列,然后使用table
和proportions
来获得份额。
proportions(table(do.call(paste,DT))) * 100
# 1 1 2 1 2 2 1 2 3 2 1 2 2 2 2 2 2 3
# 5.263158 22.807018 8.771930 5.263158 22.807018 35.087719
,
import ffmpeg
import schedule
import time
def stream_1():
packet_size = 4096
process = (
ffmpeg
.input('rtsp://....')
.output('streaming.m3u8',hls_time=3,hls_wrap=10)
.run_async(pipe_stdout=True)
)
while process.poll() is None:
packet = process.stdout.read(packet_size)
try:
tcp_socket.send(packet)
except socket.error:
process.stdout.close()
process.wait()
break
def stream_2():
packet_size = 4096
process = (
ffmpeg
.input('rtsp://....')
.output('streaming.m3u8',hls_wrap=10)
.run_async(pipe_stdout=True)
)
while process.poll() is None:
packet = process.stdout.read(packet_size)
try:
tcp_socket.send(packet)
except socket.error:
process.stdout.close()
process.wait()
break
schedule.every(1).minutes.do(stream_1)
schedule.every(2).minutes.do(stream_2)
的另一个选项
count
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。