根据之前的一些很好的建议,我现在正在编写我的第二个R函数并使用类似的逻辑.但是,我正在尝试自动化一点,并且可能为了自己的利益而变得过于聪明.
我想根据订单数量将客户分成五分位数.这是我的代码:
# sample data
clientID <- round(runif(200,min=2000, max=3000),0)
orders <- round(runif(200,min=1, max=50),0)
df <- df <- data.frame(cbind(clientID,orders))
#function to break them into quintiles
ApplyQuintiles <- function(x) {
cut(x, breaks=c(quantile(df$orders, probs = seq(0, 1, by = 0.20))),
labels=c("0-20","20-40","40-60","60-80","80-100"))
}
#Add the quintile to the dataframe
df$Quintile <- sapply(df$orders, ApplyQuintiles)
Run Code Online (Sandbox Code Playgroud)
table(df$Quintile)
0-20 20-40 40-60 60-80 80-100
40 39 44 38 36
Run Code Online (Sandbox Code Playgroud)
你会在这里看到,在我的样本数据中,我创建了200个观察值,但只列出了197个table.剩下的3个是NA
现在,有一些对于五分位数具有"NA"的clientID.看起来如果他们处于最低休息时间,在这种情况下为1,那么他们就不会被包括在切割功能中.
有没有办法cut包容所有观察?
我正在尝试编写一个bash脚本,它将从播放列表中下载所有YouTube视频,并根据youtube视频本身的标题将它们保存为特定的文件名.到目前为止,我有两个独立的代码片段,可以完成我想要的但我不知道如何将它们组合在一起作为一个单元.
这段代码可以找到给定页面上所有YouTube视频的标题:
curl -s "$1" | grep '<span class="title video-title "' | cut -d\> -f2 | cut -d\< -f1
Run Code Online (Sandbox Code Playgroud)
这段代码将文件下载到youtube视频ID给出的文件名(例如,youtube.com/watch?v = CsBVaJelurE&feature = relmfu 提供的文件名为CsBVaJelurE.flv)
curl -s "$1" | grep "watch?" | cut -d\" -f4| while read video;
do youtube-dl "http://www.youtube.com$video";
done
Run Code Online (Sandbox Code Playgroud)
我想要一个脚本,将youtube .flv文件输出到由视频标题(在本例中为BASH课程2.flv)给出的文件名,而不仅仅是视频ID名称.在此先感谢所有的帮助.
我正在尝试解析特定目录中的文件名.文件名的格式为:
token1_token2_token3_token(N-1)_token(N).sh
Run Code Online (Sandbox Code Playgroud)
我需要使用分隔符来剪切标记'_',并且除了最后两个标记之外需要使用字符串.在上面的检查输出应该是token1_token2_token3.
令牌数量不固定.我已尝试使用命令-f#-选项cut,但没有找到任何解决方案.有任何想法吗?
这是test.txt:
0x01,0xDF,0x93,0x65,0xF8
0x01,0xB0,0x01,0x03,0x02,0x00,0x64,0x06,0x01,0xB0
0x01,0xB2,0x00,0x76
Run Code Online (Sandbox Code Playgroud)
如果我运行
awk -F, 'BEGIN{OFS=","}{$2="";print $0}' test.txt
结果是:
0x01,,0x93,0x65,0xF8
0x01,,0x01,0x03,0x02,0x00,0x64,0x06,0x01,0xB0
0x01,,0x00,0x76
Run Code Online (Sandbox Code Playgroud)
$2 没有被删除,它只是变空了。我希望在打印 $0 时,结果是:
0x01,0x93,0x65,0xF8
0x01,0x01,0x03,0x02,0x00,0x64,0x06,0x01,0xB0
0x01,0x00,0x76
Run Code Online (Sandbox Code Playgroud) 我有这样一个文件:
one
two
three
four
Run Code Online (Sandbox Code Playgroud)
我想在bash脚本中使用for循环来扫描文件行以获取行.以前我用过cut但是我无法给cut命令换行分隔符,我该怎么办?
这样它不起作用:
cut -d'\n' -f1
Run Code Online (Sandbox Code Playgroud)
有什么建议吗?
如果我想使用字符串作为分隔符来剪切文本列表,那可能吗?例如,我有一个目录,其中shell脚本列表调用相同的perl脚本说
abc.pl
Run Code Online (Sandbox Code Playgroud)
所以,当我这样做
$grep abc.pl *
Run Code Online (Sandbox Code Playgroud)
在该目录中,它给了我以下结果
xyz.sh: abc.pl 1 2
xyz2.sh: abc.pl 2
mno.sh: abc.pl 3
pqr.sh: abc.pl 4 5
Run Code Online (Sandbox Code Playgroud)
我基本上想要"abc.pl"之后的所有输出(以检查现在传递给perl的范围参数)
当我尝试
$grep abc.pl * | cut -d'abc.pl' -f2
Run Code Online (Sandbox Code Playgroud)
要么
$grep abc.pl * | cut -d'abc\.pl' -f2
Run Code Online (Sandbox Code Playgroud)
它给了我
cut: invalid delimiter
Run Code Online (Sandbox Code Playgroud)
当我读人为切,它说
delim可以是多字节字符.
我在做什么/解释错了?
我正在尝试构建一个shell脚本来监视一些日志文件.我正在使用这样的命令:
tail -f /var/somelog | grep --line-buffered " some test and p l a c e h o l d e r" | cut -f 3,4,14 -d " "
Run Code Online (Sandbox Code Playgroud)
日志文件如下:
some test and p l a c e h o l d e r 3
some test and p l a c e h o l d e r 4
some test and p l a c e h o l d e r 5
some test and p l …Run Code Online (Sandbox Code Playgroud) 这是我的sample.txt文件,它包含以下内容
31113 70:54:D2 - a-31003
31114 70:54:D2 - b-31304
31111 4C:72:B9 - c-31303
31112 4C:72:B9 - d-31302
Run Code Online (Sandbox Code Playgroud)
我必须编写shell脚本,因为我将前5个字符(例如31113)作为输入id传递给其他脚本.为此我试过这个
#!/bin/sh
filename='sample.txt'
filelines=`cat $filename`
while read -r line
do
id= cut -c-5 $line
echo $id
#code for passing id to other script file as parameter
done < "$filename"
Run Code Online (Sandbox Code Playgroud)
但它不起作用这给了我错误
cut: 31113: No such file or directory
cut: 70:54:D2 No such file or directory
31114
31111
31112
: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我有一个具有以下名称格式的文件:
rzp-QAQ_SA2-5.12.0.38-quality.zip
rzp-TEST-5.12.0.38-quality.zip
rzp-ASQ_TFC-5.12.0.38-quality.zip
Run Code Online (Sandbox Code Playgroud)
我想要的值为:5.12.0.38-quality.zip来自上面的文件名。
我尝试如下,但没有得到正确的值:
echo "$fl_name" | sed 's#^[-[:alpha:]_[:digit:]]*##'
Run Code Online (Sandbox Code Playgroud)
fl_name是包含文件名的变量。
预先非常感谢!
当我使用命令时,有一个文件,分隔符是tab
cut -d \t file.txt #or "\t" or "\\t"
Run Code Online (Sandbox Code Playgroud)
我收到这条消息
cut:您必须指定字节,字符或字段的列表
尝试`cut --help'获取更多信息.
如何使用cut 命令?