Обработка строк символов в числовые переменные в R

Для этого вам не нужен файл .jar. Вы можете просто создать новый файл FXML с тем, что вам нужно. поле со списком. Создайте файл класса с расширением поля со списком, контроллером и добавьте контроллер в файл FXML (в построителе сцен).

Найдите «Импорт из файла JAR / FXML» в поле со списком рядом с левым окном поиска в построителе сцен, а затем выберите файл. Теперь у вас есть новая панель заголовка в левом аккордеоне с именем Custom. Здесь вы можете найти свои компоненты.

@edit Есть файлы.

MyGridPane.fxml

<?xml version="1.0" encoding="UTF-8"?>

<?import java.lang.*?>
<?import javafx.scene.layout.*?>

<fx:root type="javafx.scene.layout.GridPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0"  xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8" fx:controller="MyGridPane.MyGridPaneController">
  <columnConstraints>
    <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
    <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
  </columnConstraints>
  <rowConstraints>
    <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
    <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
    <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
  </rowConstraints>
</fx:root>

MyGridPane.java

package MyGridPane;

import javafx.fxml.FXMLLoader;
import java.io.IOException;

/**
 * Created by Marcin on 2014-09-01.
 */
public class MyGridPane {
    MyGridPane(){
        FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("MyGridPane.fxml"));
        fxmlLoader.setRoot(this); fxmlLoader.setController(this);
        try {
            fxmlLoader.load();
        } catch (IOException exception) {
            throw new RuntimeException(exception);
        }
    }
}

MyGridPaneController.java

package MyGridPane;

import javafx.fxml.Initializable;

import java.net.URL;
import java.util.ResourceBundle;

/**
 * Created by Marcin on 2014-09-01.
 */
public class MyGridPaneController implements Initializable{
    @Override
    public void initialize(URL location, ResourceBundle resources) {

    }
}

Следующий шаг добавляется в Scene Builder

enter image description here [/g0]

, и вы можете добавить этот компонент .

enter image description here [/g1]

-2
задан NelsonGon 5 March 2019 в 03:08
поделиться

3 ответа

Лучше выполнить левое соединение с lookup data.frame, содержащим сопоставления grade - gradenumber. Таким образом, вы избегаете многих ifelse утверждений.

Вот воспроизводимый пример:

# Grades
grades <- paste0(rep(LETTERS[c(1:4,6)], each = 3), c("+", "", "-"))[-c(1, 13)]
grades
#[1] "A"  "A-" "B+" "B"  "B-" "C+" "C"  "C-" "D+" "D"  "D-" "F"  "F-"

Generate lookup data.frame

lookup <- data.frame(
    grade = grades,
    gradenumber = length(grades):1)

Теперь мы сгенерируем некоторые выборочные данные PollsFiltered, а затем left_join данные с lookup по grade.

set.seed(2018)
PollsFiltered <- data.frame(
    grade = sample(grades, 20, replace = T)
)

library(dplyr)
PollsFiltered %>%
    left_join(lookup, by = "grade")
#   grade gradenumber
#1     B-           9
#2      C           7
#3      A          13
#4     B+          11
#5      C           7
#6      B          10
#7     C-           6
#8     A-          12
#9     F-           1
#10    C-           6
#11    C+           8
#12    D+           5
#13    F-           1
#14    D+           5
#15    D-           3
#16    D+           5
#17     B          10
#18    C-           6
#19     D           4
#20    D-           3
0
ответ дан Maurits Evers 5 March 2019 в 03:08
поделиться

Другой вариант использования dplyr - использовать оператор case_when следующим образом:

df$Num_grade <- NA
df <- mutate(df, Num_grade = case_when(
   grades == 'A' ~ 13,
   grades == 'A-' ~ 12,
   grades == 'B+' ~ 11,
   .
   .
   .
   grades == 'F-' ~ 1
))

, который работает во многом как несколько операторов ifelse, но, на мой взгляд, легче понять

0
ответ дан César Orduño 5 March 2019 в 03:08
поделиться

Вот как использовать match (основываясь на MCVE, предложенном Морисом:

 grades <- paste0(rep(LETTERS[c(1:4,6)], each = 3), c("+", "", "-"))[-c( 13)] # keep A+
 PollsFiltered$nums <- match(PollsFiltered$grade, rev(grades) ) # F(1) to A+(14)

> head(PollsFiltered)
  grade nums
1     B   10
2    C+    8
3    A+   14
4    A-   12
5    C+    8
6     B   10
0
ответ дан 42- 5 March 2019 в 03:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: