将数字转换为R中的时间

时间:2018-09-04 11:28:27

标签: r

我想将带有数字的数据框列转换为小时(以数字为单位),例如,如果该值为75,则需要将其转换为1.15,或者如果该值为180,则需要将其转换为3,以此类推。上。不必一定是时间格式。我知道下面的功能是用户将数字转换为时间,但是我想做的是不同的。

x = c('834', '1534')    
time <- substr(as.POSIXct(sprintf("%04.0f", x), format='%H%M'), 12, 16)

a

3 个答案:

答案 0 :(得分:1)

在我看来,您只是经过了几分钟(至小数小时)的转换。

请注意,似乎“ 75”实际上应该是1.25而不是1.15的错误。如果这不是一个错误,请说明“ 75”如何变为1.15。

viewHolder.setClickListener(new ItemClickListener() {
            @Override
            public void onClick(View view, int position, boolean isLongClick) {

                if (isLongClick) {

                } else {

                    String test = strPokemonInfo.get(i);
                    String[] separated = test.split("/");
                    intPokemonID = Integer.parseInt(separated[0]);
                    pokeDexID = Integer.parseInt(separated[1]);

                    Fragment myFragment = new SinglePokemonFragment();
                    Bundle bundle = new Bundle();

                    bundle.putInt("POKEMON_ID", intPokemonID);
                    bundle.putInt("ARRAY_ID", i);
                    bundle.putInt("POKEMON_ID_MAX", strPokemonInfo.size());
                    bundle.putInt("POKEDEX_ID", pokeDexID);

                    myFragment.setArguments(bundle);
                    AppCompatActivity activity = (AppCompatActivity) view.getContext();
                    activity.getSupportFragmentManager().beginTransaction().replace(R.id.frame_container, myFragment).addToBackStack(null).commit();

                }

            }
        });

答案 1 :(得分:1)

将几秒钟(例如75)转换为十进制格式,例如minutes.seconds有点奇怪,但是您可以这样操作:

a <- 75
hour <- floor(a / 60) # floor() rounds down to the last full hour
minute <- a %% 60 * 0.01 # the %% operator gives you the remainder in base 60
new_time <- hour + minute

1.15

答案 2 :(得分:0)

我创建了一个函数,虽然不是最好的方法,但是它可以工作。

number.to.time <- function(x){  
hours <- as.numeric(x)/60  
clean.hours <- floor(hours)  
minutes.60 <- clean.hours*60  
get.extra.minutes <- as.numeric(x) - minutes.60  
result <- paste(clean.hours, get.extra.minutes, sep=".")  
return(result)  
}

结果;

>number.to.time(75)
[1] "1.15"

>number.to.time(1112)
 [1] "18.32"

 x = c(75, 190, 200, 1155)

> number.to.time(x)
[1] "1.15"  "3.10"  "3.40"  "19.15"