我有以下数据框surge:
MeshID StormID Rate Surge Wind
1 1412 1.0000E-01 0.01 0.0
2 1412 1.0000E-01 0.03 0.0
3 1412 1.0000E-01 0.09 0.0
4 1412 1.0000E-01 0.12 0.0
5 1412 1.0000E-01 0.02 0.0
6 1412 1.0000E-01 0.02 0.0
7 1412 1.0000E-01 0.07 0.0
1 1413 1.0000E-01 0.06 0.0
2 1413 1.0000E-01 0.02 0.0
3 1413 1.0000E-01 0.05 0.0
Run Code Online (Sandbox Code Playgroud)
我使用以下代码来查找每次风暴的最大浪涌值:
MaxSurge <- data.frame(tapply(surge[,4], surge[,2], max))
Run Code Online (Sandbox Code Playgroud)
它返回:
1412 0.12
1413 0.06
Run Code Online (Sandbox Code Playgroud)
这很好,除了我还希望它包含MeshID在浪涌最大的点处的值.我知道我可能会使用which.max,但我无法弄清楚如何将其付诸行动.我对R编程非常陌生.
我想将plyr.tar.gz文件中的软件包安装到linux机器上的R软件包库中.我该怎么做呢?我只是将它放在库目录中吗?如果我没有写权限怎么办?
我想将以科学记数法存储的数字转换为浮点小数,这样我就可以对数据进行一些比较.这是在bash脚本中完成的 - 这是代码的一小部分:
while read track_id landfall_num gate_id pres_inter
do
if [[ $landfall_num == 0001 ]]
then
start_flag = true
echo DING DING $start_flag
if [[ $pres_inter < 97000 ]]
then
echo Strong Storm From North $track_id, $gate_id, $pres_inter
fi
fi
done < $file
Run Code Online (Sandbox Code Playgroud)
我的问题是我的<操作数基本上选择了所有压力值,当我使用时,它们以科学记数法存储<,而在我使用时则没有>.我正在研究帕斯卡而不是毫巴的大气压测量.
这是示例输出:
Strong Storm From North 0039988 0017 1.0074E+05
Strong Storm From North 0037481 0018 9.9831E+04
Run Code Online (Sandbox Code Playgroud)
这些风暴都不应该符合选择标准!
我想使用write.csv语句将输出定向到文件.我想写16个不同的输出文件,用扩展名1到16标记每个文件.
现在写的例子:
trackfilenums=1:16
for (i in trackfilenums){
calculations etc
write.csv(max.hsi, 'Severity_Index.csv', row.names=F)
}
Run Code Online (Sandbox Code Playgroud)
我想输出csv文件标记为'Severity_Index_1.csv','Severity_Index_2.csv'等.不确定如何在R语言中执行此操作.
谢谢!金佰利
我正在尝试在 bash 中执行简单的整数比较,我是新使用的,并且我的方法导致错误。任何意见,将不胜感激。
我的基本逻辑是我正在阅读飓风轨迹点。同一 track_id 可能有多个具有不同压力值的条目。我想要做的是将每个 track_id 仅存储一个条目到数组 track_id_poly 中;压力最低的情况。因此,我循环遍历每一行,并尝试将当前压力(对于 $int)与先前的轨道压力($int - 1)进行比较,如果它较低,则用新的较低压力替换先前的数组值。我希望这是有道理的。我的代码如下。
int=0
while read track_id ppres_inter
do
printf -v pres_inter "%.0f" "$pres_inter"
echo pressure $pres_inter
case $int in
0)
Track_id_poly[$int]=$track_id
Pres_inter_poly[$int]=$pres_inter
((int=int+1)) ;;
*)
if [[ $track_id == ${Track_id_poly[$int-1]} ]]
then
if (( $pres_inter -lt ${Pres_inter_poly[$int-1]} ))
then
Track_id_poly[$int-1]=$track_id
Pres_inter_poly[$int-1]=$pres_inter
fi
else
Track_id_poly[$int]=$track_id
Pres_inter_poly[$int]=$pres_inter
((int=int+1))
fi ;;
esac
done <$file_poly
int_poly=$int
echo Number of polygon crossings from set $i is $int_poly
Run Code Online (Sandbox Code Playgroud)
给我带来问题的行是 $pres_inter 的整数比较。
if (( $pres_inter -lt …Run Code Online (Sandbox Code Playgroud)